명령줄 인터페이스
명령어
vitest
현재 디렉터리에서 Vitest를 시작합니다. 개발 환경에서는 자동으로 감시 모드로 전환되며, CI 환경에서는 실행 모드로 자동 전환됩니다.
실행할 테스트 파일의 필터로 추가 인수를 전달할 수 있습니다. 예를 들어:
vitest foobar
경로에 foobar
가 포함된 테스트 파일만 실행합니다. 이 필터는 포함 여부만 확인하며, 정규 표현식 또는 glob 패턴을 지원하지 않습니다 (터미널이 Vitest가 필터를 받기 전에 처리하지 않는 한).
vitest run
감시 모드 없이 테스트를 한 번만 실행합니다.
vitest watch
모든 테스트 모음을 실행하지만, 파일 변경 사항을 감시하고 변경될 때 테스트를 다시 실행합니다. 인수 없이 vitest
를 호출하는 것과 같습니다. CI 환경에서는 vitest run
으로 대체됩니다.
vitest dev
vitest watch
의 별칭입니다.
vitest related
지정된 소스 파일을 포함하는 테스트만 실행합니다. 정적 import (예: import('./index.js')
또는 import index from './index.js')
)와 함께 작동하지만, 동적 import (예: import(filepath)
)와는 작동하지 않습니다. 모든 파일 경로는 루트 폴더를 기준으로 해야 합니다.
lint-staged
또는 CI 설정과 함께 실행하는 데 유용합니다.
vitest related /src/index.ts /src/hello-world.js
TIP
Vitest는 기본적으로 감시 모드가 활성화된 상태로 실행됩니다. lint-staged
와 같은 도구를 사용하는 경우, --run
옵션을 함께 전달하여 명령이 정상적으로 종료되도록 해야 합니다.
// .lintstagedrc.js
export default {
'*.{js,ts}': 'vitest related --run',
};
vitest bench
성능 결과를 비교하는 벤치마크 테스트만 실행합니다.
옵션
옵션 | |
---|---|
-r, --root <경로> | 루트 경로 |
-c, --config <경로> | 구성 파일 경로 |
-u, --update | 스냅샷 업데이트 |
-w, --watch | Watch 모드 활성화 |
-t, --testNamePattern <패턴> | 지정된 정규식 패턴과 일치하는 전체 이름을 가진 테스트 실행 |
--dir <경로> | 테스트 파일을 검색할 기본 디렉토리 |
--ui | UI 활성화 |
--open | UI 자동 실행 (기본값: !process.env.CI ) |
--api.port [포트] | 서버 포트 지정. 지정된 포트가 이미 사용 중인 경우, Vite는 자동으로 사용 가능한 다음 포트를 시도합니다. 따라서 실제 서버가 수신 대기하는 포트가 아닐 수 있습니다. True로 설정하면, 51204 로 설정됩니다. |
--api.host [호스트] | 서버가 수신 대기해야 하는 IP 주소를 지정합니다. LAN 및 공용 주소를 포함하여 모든 주소에서 수신 대기하려면 0.0.0.0 또는 true 로 설정합니다. |
--api.strictPort | 포트가 이미 사용 중인 경우, 사용 가능한 다음 포트를 자동으로 시도하는 대신 종료하려면 true로 설정합니다. |
--silent | 테스트에서 콘솔 출력을 숨깁니다. |
--hideSkippedTests | 건너뛴 테스트의 로그를 숨깁니다. |
--reporter <이름> | 리포터 지정 |
--outputFile <파일명/-s> | 지원되는 리포터가 지정된 경우 테스트 결과를 파일에 씁니다. 여러 리포터의 개별 출력에 대해 cac의 점 표기법을 사용합니다 (예: --outputFile.tap=./tap.txt). |
--coverage.all | 테스트되지 않은 파일을 포함하여 모든 파일을 보고서에 포함할지 여부 |
--coverage.provider <이름> | 커버리지 수집 도구 선택 (사용 가능한 값: "v8", "istanbul", "custom") |
--coverage.enabled | 커버리지 수집 활성화. --coverage CLI 옵션을 사용하여 덮어쓸 수 있습니다 (기본값: false ). |
--coverage.include <패턴> | 커버리지에 포함된 파일의 glob 패턴. 여러 패턴을 사용할 때 여러 번 지정할 수 있습니다 (기본값: ** ). |
--coverage.exclude <패턴> | 커버리지에서 제외할 파일. 여러 확장자를 사용할 때 여러 번 지정할 수 있습니다 (기본값: coverage.exclude 방문). |
--coverage.extension <확장자> | 커버리지에 포함할 확장자. 여러 확장자를 사용할 때 여러 번 지정할 수 있습니다 (기본값: [".js", ".cjs", ".mjs", ".ts", ".mts", ".cts", ".tsx", ".jsx", ".vue", ".svelte"] ). |
--coverage.clean | 테스트 실행 전에 커버리지 결과 정리 (기본값: true) |
--coverage.cleanOnRerun | Watch 재실행 시 커버리지 보고서 정리 (기본값: true) |
--coverage.reportsDirectory <경로> | 커버리지 보고서를 쓸 디렉토리 (기본값: ./coverage) |
--coverage.reporter <이름> | 사용할 커버리지 리포터. 자세한 내용은 coverage.reporter 를 방문하십시오 (기본값: ["text", "html", "clover", "json"] ). |
--coverage.reportOnFailure | 테스트 실패 시에도 커버리지 보고서 생성 (기본값: false ) |
--coverage.allowExternal | 프로젝트 루트 외부의 파일에 대한 커버리지 수집 (기본값: false ) |
--coverage.skipFull | 100% 문, 분기 및 함수 커버리지를 가진 파일을 표시하지 않습니다 (기본값: false ). |
--coverage.thresholds.100 | 모든 커버리지 임계값을 100으로 설정하는 바로 가기 (기본값: false ) |
--coverage.thresholds.perFile | 파일 당 임계값 확인. 실제 임계값은 --coverage.thresholds.lines , --coverage.thresholds.functions , --coverage.thresholds.branches , --coverage.thresholds.statements 를 참조하십시오 (기본값: false ). |
--coverage.thresholds.autoUpdate | 현재 커버리지가 구성된 임계값보다 높을 때 "lines", "functions", "branches" 및 "statements" 임계값 값을 구성 파일에 업데이트합니다 (기본값: false ). |
--coverage.thresholds.lines <number> | 라인에 대한 임계값. 자세한 내용은 istanbuljs를 방문하십시오. 이 옵션은 사용자 정의 공급자에게는 사용할 수 없습니다. |
--coverage.thresholds.functions <number> | 함수에 대한 임계값. 자세한 내용은 istanbuljs를 방문하십시오. 이 옵션은 사용자 정의 공급자에게는 사용할 수 없습니다. |
--coverage.thresholds.branches <number> | 분기에 대한 임계값. 자세한 내용은 istanbuljs를 방문하십시오. 이 옵션은 사용자 정의 공급자에게는 사용할 수 없습니다. |
--coverage.thresholds.statements <number> | 문에 대한 임계값. 자세한 내용은 istanbuljs를 방문하십시오. 이 옵션은 사용자 정의 공급자에게는 사용할 수 없습니다. |
--coverage.ignoreClassMethods <name> | 커버리지에서 무시될 클래스 메서드 이름의 배열. 자세한 내용은 istanbuljs를 방문하십시오. 이 옵션은 istanbul 공급자에게만 사용할 수 있습니다 (기본값: [] ). |
--coverage.processingConcurrency <number> | 커버리지 결과 처리 시 사용되는 동시성 제한 (기본값: 20과 CPU 수 중 작은 값). |
--coverage.customProviderModule <경로> | 사용자 정의 커버리지 공급자 모듈의 모듈 이름 또는 경로를 지정합니다. 자세한 내용은 사용자 정의 커버리지 공급자를 방문하십시오. 이 옵션은 사용자 정의 공급자에게만 사용할 수 있습니다. |
--coverage.watermarks.statements <워터마크> | <높음>,<낮음> 형식의 문에 대한 높고 낮은 워터마크 |
--coverage.watermarks.lines <워터마크> | <높음>,<낮음> 형식의 라인에 대한 높고 낮은 워터마크 |
--coverage.watermarks.branches <워터마크> | <높음>,<낮음> 형식의 분기에 대한 높고 낮은 워터마크 |
--coverage.watermarks.functions <워터마크> | <높음>,<낮음> 형식의 함수에 대한 높고 낮은 워터마크 |
--mode <이름> | Vite 모드 덮어쓰기 (기본값: test 또는 benchmark ) |
--workspace <경로> | 워크스페이스 구성 파일의 경로 |
--isolate | 모든 테스트 파일을 격리하여 실행합니다. 격리를 비활성화하려면 --no-isolate 를 사용하십시오 (기본값: true ). |
--globals | API를 전역적으로 삽입합니다. |
--dom | happy-dom으로 브라우저 API를 모의합니다. |
--browser.enabled | 브라우저에서 테스트를 실행합니다. --browser.enabled 와 동일합니다 (기본값: false ). |
--browser.name <이름> | 특정 브라우저에서 모든 테스트를 실행합니다. 일부 브라우저는 특정 공급자에서만 사용할 수 있습니다 (--browser.provider 참조). 자세한 내용은 browser.name 을 방문하십시오. |
--browser.headless | GUI(Graphical User Interface)를 열지 않고 headless 모드로 브라우저를 실행합니다. CI에서 Vitest를 실행하는 경우 기본적으로 활성화됩니다 (기본값: process.env.CI ). |
--browser.api.port [포트] | 서버 포트 지정. 지정된 포트가 이미 사용 중인 경우, Vite는 자동으로 사용 가능한 다음 포트를 시도합니다. 따라서 실제 서버가 수신 대기하는 포트가 아닐 수 있습니다. True로 설정하면, 63315 로 설정됩니다. |
--browser.api.host [호스트] | 서버가 수신 대기해야 하는 IP 주소를 지정합니다. LAN 및 공용 주소를 포함하여 모든 주소에서 수신 대기하려면 0.0.0.0 또는 true 로 설정합니다. |
--browser.api.strictPort | 포트가 이미 사용 중인 경우, 사용 가능한 다음 포트를 자동으로 시도하는 대신 종료하려면 true로 설정합니다. |
--browser.provider <이름> | 브라우저 테스트를 실행하는 데 사용되는 공급자. 일부 브라우저는 특정 공급자에서만 사용할 수 있습니다. "webdriverio", "playwright" 또는 사용자 정의 공급자의 경로일 수 있습니다. 자세한 내용은 browser.provider 를 방문하십시오 (기본값: "webdriverio" ). |
--browser.providerOptions <옵션> | 브라우저 공급자에게 전달되는 옵션. 자세한 내용은 browser.providerOptions 를 방문하십시오. |
--browser.slowHijackESM | Vitest가 vi.mock 및 vi.spyOn과 같은 API를 활성화하기 위해 브라우저에서 자체 모듈 분석을 사용하도록 합니다. 자세한 내용은 browser.slowHijackESM 을 방문하십시오 (기본값: false ). |
--browser.isolate | 모든 브라우저 테스트 파일을 격리하여 실행합니다. 격리를 비활성화하려면 --browser.isolate=false 를 사용하십시오 (기본값: true ). |
--browser.fileParallelism | 모든 테스트 파일을 병렬로 실행해야 하는지 여부. 비활성화하려면 --browser.file-parallelism=false 를 사용하십시오 (기본값: --file-parallelism 과 같음). |
--pool <풀> | 브라우저에서 실행되지 않는 경우 풀을 지정합니다 (기본값: threads ). |
--poolOptions.threads.isolate | 스레드 풀에서 테스트를 격리합니다 (기본값: true ). |
--poolOptions.threads.singleThread | 단일 스레드 내에서 테스트를 실행합니다 (기본값: false ). |
--poolOptions.threads.maxThreads <workers> | 테스트를 실행할 최대 스레드 수 |
--poolOptions.threads.minThreads <workers> | 테스트를 실행할 최소 스레드 수 |
--poolOptions.threads.useAtomics | Atomics를 사용하여 스레드를 동기화합니다. 경우에 따라 성능을 향상시킬 수 있지만 이전 Node 버전에서 세그폴트가 발생할 수 있습니다 (기본값: false ). |
--poolOptions.vmThreads.isolate | 스레드 풀에서 테스트를 격리합니다 (기본값: true ). |
--poolOptions.vmThreads.singleThread | 단일 스레드 내에서 테스트를 실행합니다 (기본값: false ). |
--poolOptions.vmThreads.maxThreads <workers> | 테스트를 실행할 최대 스레드 수 |
--poolOptions.vmThreads.minThreads <workers> | 테스트를 실행할 최소 스레드 수 |
--poolOptions.vmThreads.useAtomics | Atomics를 사용하여 스레드를 동기화합니다. 경우에 따라 성능을 향상시킬 수 있지만 이전 Node 버전에서 세그폴트가 발생할 수 있습니다 (기본값: false ). |
--poolOptions.vmThreads.memoryLimit <limit> | VM 스레드 풀의 메모리 제한. 메모리 누수가 발생하는 경우 이 값을 조정하십시오. |
--poolOptions.forks.isolate | 포크 풀에서 테스트를 격리합니다 (기본값: true ). |
--poolOptions.forks.singleFork | 단일 child_process 내에서 테스트를 실행합니다 (기본값: false ). |
--poolOptions.forks.maxForks <workers> | 테스트를 실행할 최대 프로세스 수 |
--poolOptions.forks.minForks <workers> | 테스트를 실행할 최소 프로세스 수 |
--poolOptions.vmForks.isolate | 포크 풀에서 테스트를 격리합니다 (기본값: true ). |
--poolOptions.vmForks.singleFork | 단일 child_process 내에서 테스트를 실행합니다 (기본값: false ). |
--poolOptions.vmForks.maxForks <workers> | 테스트를 실행할 최대 프로세스 수 |
--poolOptions.vmForks.minForks <workers> | 테스트를 실행할 최소 프로세스 수 |
--poolOptions.vmForks.memoryLimit <limit> | VM 포크 풀의 메모리 제한. 메모리 누수가 발생하는 경우 이 값을 조정하십시오. |
--fileParallelism | 모든 테스트 파일을 병렬로 실행해야 하는지 여부. 비활성화하려면 --no-file-parallelism 를 사용하십시오 (기본값: true ). |
--maxWorkers <workers> | 테스트를 실행할 최대 작업자 수 |
--minWorkers <workers> | 테스트를 실행할 최소 작업자 수 |
--environment <이름> | 브라우저에서 실행되지 않는 경우 실행기 환경을 지정합니다 (기본값: node ). |
--passWithNoTests | 테스트가 없을 때 통과합니다. |
--logHeapUsage | 노드에서 실행할 때 각 테스트의 힙 크기를 표시합니다. |
--allowOnly | only로 표시된 테스트 및 스위트를 허용합니다 (기본값: !process.env.CI ). |
--dangerouslyIgnoreUnhandledErrors | 발생하는 처리되지 않은 오류를 무시합니다. |
--shard <샤드> | <인덱스>/<개수> 형식으로 실행할 테스트 스위트 샤드 |
--changed [이후] | 변경된 파일의 영향을 받는 테스트를 실행합니다 (기본값: false ). |
--sequence.shuffle.files | 파일을 임의 순서로 실행합니다. 이 옵션을 활성화해도 오래 실행되는 테스트가 더 빨리 시작되지는 않습니다 (기본값: false ). |
--sequence.shuffle.tests | 테스트를 임의 순서로 실행합니다 (기본값: false ). |
--sequence.concurrent | 테스트를 병렬로 실행합니다 (기본값: false ). |
--sequence.seed <시드> | 임의화 시드를 설정합니다. --sequence.shuffle가 false이면 이 옵션은 아무런 효과가 없습니다. 자세한 내용은 "임의 시드" 페이지를 방문하십시오. |
--sequence.hooks <순서> | 훅이 실행되는 순서를 변경합니다. 허용되는 값은 "stack", "list" 및 "parallel"입니다. 자세한 내용은 sequence.hooks 를 방문하십시오 (기본값: "parallel" ). |
--sequence.setupFiles <순서> | 설정 파일이 실행되는 순서를 변경합니다. 허용되는 값은 "list"와 "parallel"입니다. "list"로 설정하면 설정 파일이 정의된 순서대로 실행됩니다. "parallel"로 설정하면 설정 파일이 병렬로 실행됩니다 (기본값: "parallel" ). |
--inspect [[호스트:]포트] | Node.js 검사기 활성화 (기본값: 127.0.0.1:9229 ) |
--inspectBrk [[호스트:]포트] | Node.js 검사기를 활성화하고 테스트 시작 전에 중단합니다. |
--testTimeout <타임아웃> | 테스트의 기본 타임아웃(밀리초) (기본값: 5000 ) |
--hookTimeout <타임아웃> | 기본 훅 타임아웃(밀리초) (기본값: 10000 ) |
--bail <number> | 주어진 수만큼 테스트가 실패하면 테스트 실행을 중단합니다 (기본값: 0 ). |
--retry <times> | 실패할 경우 특정 횟수만큼 테스트를 재시도합니다 (기본값: 0 ). |
--diff <경로> | diff 인터페이스를 생성하는 데 사용될 diff 구성의 경로 |
--exclude <glob> | 테스트에서 제외될 추가 파일 glob |
--expandSnapshotDiff | 스냅샷이 실패할 때 전체 diff 표시 |
--disableConsoleIntercept | 콘솔 로깅의 자동 가로채기 비활성화 (기본값: false ) |
--typecheck.enabled | 테스트와 함께 타입 검사 활성화 (기본값: false ) |
--typecheck.only | 타입 검사 테스트만 실행합니다. 이렇게 하면 타입 검사가 자동으로 활성화됩니다 (기본값: false ). |
--typecheck.checker <이름> | 사용할 타입 검사기를 지정합니다. 사용 가능한 값은 "tsc"와 "vue-tsc"이며 실행 파일의 경로입니다 (기본값: "tsc" ). |
--typecheck.allowJs | JavaScript 파일의 타입 검사를 허용합니다. 기본적으로 tsconfig.json의 값을 사용합니다. |
--typecheck.ignoreSourceErrors | 소스 파일의 타입 오류를 무시합니다. |
--typecheck.tsconfig <경로> | 사용자 정의 tsconfig 파일의 경로 |
--project <이름> | Vitest 워크스페이스 기능을 사용하는 경우 실행할 프로젝트의 이름. 여러 프로젝트에 대해 반복할 수 있습니다: --project=1 --project=2 . --project=packages* 와 같은 와일드카드를 사용하여 프로젝트를 필터링할 수도 있습니다. |
--slowTestThreshold <임계값> | 테스트가 느리다고 간주되는 임계값(밀리초) (기본값: 300 ) |
--teardownTimeout <타임아웃> | teardown 함수의 기본 타임아웃(밀리초) (기본값: 10000 ) |
--maxConcurrency <number> | 스위트에서 동시 테스트의 최대 수 (기본값: 5 ) |
--run | Watch 모드 비활성화 |
--segfaultRetry <times> | 세그폴트로 인해 테스트 스위트가 충돌하는 경우 테스트를 재시도합니다 (기본값: true ). |
--no-color | 콘솔 출력에서 색상을 제거합니다. |
--clearScreen | Watch 모드에서 테스트를 다시 실행할 때 터미널 화면을 지웁니다 (기본값: true ). |
--standalone | 테스트를 실행하지 않고 Vitest를 시작합니다. 파일 필터는 무시되고 테스트는 변경 시에만 실행됩니다 (기본값: false ). |
TIP
Vitest는 CLI 인수에 대해 카멜 케이스와 케밥 케이스를 모두 지원합니다. 예를 들어 --passWithNoTests
와 --pass-with-no-tests
는 모두 작동합니다 (--no-color
와 --inspect-brk
는 예외입니다).
Vitest는 또한 값을 지정하는 다양한 방법을 지원합니다. --reporter dot
과 --reporter=dot
은 모두 유효합니다.
옵션이 값의 배열을 지원하는 경우, 옵션을 여러 번 전달해야 합니다.
vitest --reporter=dot --reporter=default
부울 옵션은 no-
접두사를 사용하여 부정할 수 있습니다. 값을 false
로 지정하는 것도 작동합니다.
vitest --no-api
vitest --api=false
changed
타입:
boolean | string
기본값:
false
변경된 파일에 대해서만 테스트를 실행합니다. 값을 지정하지 않으면 커밋되지 않은 모든 변경 사항(스테이징된 변경 사항 및 스테이징되지 않은 변경 사항 포함)에 대한 테스트를 실행합니다.
최신 커밋에서 변경된 사항에 대해 테스트를 실행하려면
--changed HEAD~1
을 사용할 수 있습니다. 커밋 해시(예:--changed 09a9920
) 또는 브랜치 이름(예:--changed origin/develop
)을 전달할 수도 있습니다.코드 커버리지와 함께 사용하면 보고서에는 변경 사항과 관련된 파일만 포함됩니다.
forceRerunTriggers
구성 옵션과 함께 사용하면forceRerunTriggers
목록에 있는 파일 중 하나라도 변경될 경우 전체 테스트 스위트가 실행됩니다. 기본적으로 Vitest 구성 파일과package.json
을 변경하면 항상 전체 스위트가 다시 실행됩니다.
shard
타입:
string
기본값: 비활성화됨
<index>
/<count>
형식으로 실행할 테스트 스위트 샤드를 지정합니다. 여기서:count
는 양의 정수이며, 전체 샤드(분할)의 개수입니다.index
는 양의 정수이며, 실행할 샤드의 인덱스입니다 (1부터 시작).
이 명령은 전체 테스트를
count
개의 그룹으로 나누고, 그 중index
에 해당하는 그룹의 테스트만 실행합니다. 예를 들어, 테스트 스위트를 세 개의 샤드로 분할하려면 다음 명령어를 사용하십시오.shvitest run --shard=1/3 vitest run --shard=2/3 vitest run --shard=3/3
WARNING
--watch
옵션이 활성화된 상태 (기본적으로 개발 환경에서 활성화됨)에서는 이 옵션을 사용할 수 없습니다.