테스트 필터링
테스트 및 스위트 필터링, 타임아웃 및 동시성 설정
CLI
CLI를 사용하여 테스트 파일을 이름으로 필터링할 수 있습니다:
$ vitest basic
위 명령을 실행하면 basic
문자열을 포함하는 테스트 파일만 실행됩니다. 예를 들어 다음과 같은 파일들이 해당됩니다:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
-t, --testNamePattern <pattern>
옵션을 사용하여 전체 테스트 이름으로 필터링할 수도 있습니다. 이 옵션은 파일 이름이 아닌, 파일 내에 정의된 테스트 이름으로 필터링할 때 유용합니다.
Vitest 3부터는 파일 이름과 줄 번호를 사용하여 특정 테스트를 지정할 수 있습니다:
$ vitest basic/foo.test.ts:10
WARNING
이 기능이 정상적으로 작동하려면 Vitest에 전체 파일 이름이 제공되어야 합니다. 파일 이름은 현재 작업 디렉토리에 대한 상대 경로이거나 절대 파일 경로여야 합니다.
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
현재 Vitest는 다음과 같은 범위 지정을 지원하지 않습니다:
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
타임아웃 지정
테스트 함수에 세 번째 인수로 밀리초 단위의 타임아웃을 선택적으로 전달할 수 있습니다. 기본값은 5초입니다.
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
훅(Hooks)에서도 타임아웃을 설정할 수 있으며, 기본값은 테스트와 동일하게 5초입니다.
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
스위트 및 테스트 건너뛰기
특정 스위트나 테스트의 실행을 건너뛰려면 .skip
을 사용합니다.
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// 스위트가 건너뛰어졌으므로 이 테스트는 실행되지 않으며, 오류도 발생하지 않습니다.
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// 테스트가 건너뛰어졌으므로 이 코드는 실행되지 않으며, 오류도 발생하지 않습니다.
assert.equal(Math.sqrt(4), 3);
});
});
실행할 스위트 및 테스트 선택
특정 스위트 또는 테스트만 실행하려면 .only
를 사용합니다.
import { assert, describe, it } from 'vitest';
// .only가 붙은 이 스위트(및 다른 .only 스위트)만 실행됩니다.
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// .only 모드로 실행 중이므로 이 테스트는 건너뛰어집니다.
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// .only가 붙은 이 테스트(및 다른 .only 테스트)만 실행됩니다.
assert.equal(Math.sqrt(4), 2);
});
});
미구현 스위트 및 테스트
아직 구현되지 않았지만 향후 구현될 스위트 및 테스트를 표시하려면 .todo
를 사용합니다.
import { describe, it } from 'vitest';
// 이 스위트에 대한 항목이 테스트 보고서에 'todo'로 표시됩니다.
describe.todo('unimplemented suite');
// 이 테스트에 대한 항목이 테스트 보고서에 'todo'로 표시됩니다.
describe('suite', () => {
it.todo('unimplemented test');
});