Skip to content
Vitest 2
Main Navigation 가이드API구성브라우저 모드고급
2.1.9
1.6.1
0.34.6

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

외관

Sidebar Navigation

Vitest를 선택하는 이유

시작하기

기능

워크스페이스

명령줄 인터페이스

테스트 필터링

리포터

커버리지

스냅샷

모의화

타입 테스트

Vitest UI

소스 내 테스트

테스트 컨텍스트

테스트 환경

Matcher 확장하기

IDE 통합

디버깅

다른 테스트 러너와의 비교

마이그레이션 가이드

일반적인 오류

Profiling Test Performance

성능 향상

이 페이지에서

리포터 ​

Vitest는 다양한 형식으로 테스트 결과를 표시하는 여러 내장 리포터를 제공하며, 사용자 정의 리포터를 사용할 수 있는 기능도 포함되어 있습니다. --reporter 명령줄 옵션을 사용하거나 설정 파일의 reporters 속성을 수정하여 원하는 리포터를 선택할 수 있습니다. 리포터가 지정되지 않은 경우, Vitest는 아래에 설명된 default 리포터를 사용합니다.

명령줄에서 리포터 사용 예시:

bash
npx vitest --reporter=verbose

vitest.config.ts에서 리포터 사용 예시:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    reporters: ['verbose'],
  },
});

일부 리포터는 추가 옵션을 전달하여 사용자 정의할 수 있습니다. 리포터별 옵션은 아래 섹션에서 자세히 설명합니다.

ts
export default defineConfig({
  test: {
    reporters: ['default', ['junit', { suiteName: 'UI tests' }]],
  },
});

리포터 출력 ​

기본적으로 Vitest 리포터는 터미널에 결과를 표시합니다. json, html 또는 junit 리포터를 사용하는 경우, Vite 설정 파일 또는 CLI를 통해 outputFile 구성 옵션을 지정하여 테스트 결과를 파일에 저장할 수 있습니다.

bash
npx vitest --reporter=json --outputFile=./test-output.json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
    outputFile: './test-output.json',
  },
});

리포터 결합 ​

여러 리포터를 동시에 사용하여 테스트 결과를 다양한 형식으로 출력할 수 있습니다. 예를 들어:

bash
npx vitest --reporter=json --reporter=default
ts
export default defineConfig({
  test: {
    reporters: ['json', 'default'],
    outputFile: './test-output.json',
  },
});

위 예제는 테스트 결과를 기본 스타일로 터미널에 출력하고, 동시에 JSON 형식으로 지정된 출력 파일에 저장합니다.

여러 리포터를 사용하는 경우, 다음과 같이 각 리포터에 대해 별도의 출력 파일을 지정할 수도 있습니다.

ts
export default defineConfig({
  test: {
    reporters: ['junit', 'json', 'verbose'],
    outputFile: {
      junit: './junit-report.xml',
      json: './json-report.json',
    },
  },
});

이 예제는 별도의 JSON 및 XML 보고서를 생성하고, 자세한 보고서를 터미널에 출력합니다.

내장 리포터 ​

기본 리포터 ​

기본 설정 (리포터 미지정) 시, Vitest는 각 테스트 모음의 결과를 계층적으로 표시하고, 모음이 통과되면 결과를 축소합니다. 모든 테스트가 완료되면 최종 터미널 출력은 결과 요약과 실패한 테스트의 세부 정보를 보여줍니다.

진행 중인 테스트에 대한 예제 출력:

bash
✓ __tests__/file1.test.ts (2) 725ms
✓ __tests__/file2.test.ts (5) 746ms
  ✓ second test file (2) 746ms
    ✓ 1 + 1 should equal 2
    ✓ 2 - 1 should equal 1

테스트 완료 후 최종 출력:

bash
✓ __tests__/file1.test.ts (2) 725ms
✓ __tests__/file2.test.ts (2) 746ms

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

기본 리포터 ​

basic 리포터는 실행된 테스트 파일과 전체 모음 완료 후의 결과 요약을 표시합니다. 개별 테스트는 실패하지 않는 한 보고서에 포함되지 않습니다.

bash
npx vitest --reporter=basic
ts
export default defineConfig({
  test: {
    reporters: ['basic'],
  },
});

기본 리포터 사용 예제 출력:

bash
✓ __tests__/file1.test.ts (2) 725ms
✓ __tests__/file2.test.ts (2) 746ms

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

상세 리포터 ​

verbose 리포터는 default 리포터와 동일한 계층 구조를 따르지만, 통과된 테스트 모음에 대한 하위 트리를 축소하지 않습니다. 최종 터미널 출력은 통과된 테스트를 포함하여 실행된 모든 테스트를 표시합니다.

bash
npx vitest --reporter=verbose
ts
export default defineConfig({
  test: {
    reporters: ['verbose'],
  },
});

통과하는 테스트 모음에 대한 최종 터미널 출력 예시:

bash
✓ __tests__/file1.test.ts (2) 725ms
   ✓ first test file (2) 725ms
     ✓ 2 + 2 should equal 4
     ✓ 4 - 2 should equal 2
✓ __tests__/file2.test.ts (2) 746ms
  ✓ second test file (2) 746ms
    ✓ 1 + 1 should equal 2
    ✓ 2 - 1 should equal 1

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

도트 리포터 ​

dot 리포터는 실행된 모든 테스트를 표시하며, 최소한의 출력을 제공합니다. 완료된 각 테스트마다 점(.) 하나를 출력합니다. 세부 정보는 실패한 테스트에 대해서만 제공되며, 모음에 대한 basic 리포터 요약과 함께 표시됩니다.

bash
npx vitest --reporter=dot
ts
export default defineConfig({
  test: {
    reporters: ['dot'],
  },
});

통과하는 테스트 모음에 대한 예제 터미널 출력:

bash
....

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

JUnit 리포터 ​

JUnit XML 형식으로 테스트 결과 보고서를 출력합니다. 터미널에 출력하거나 outputFile 구성 옵션을 사용하여 XML 파일에 저장할 수 있습니다.

bash
npx vitest --reporter=junit
ts
export default defineConfig({
  test: {
    reporters: ['junit'],
  },
});

JUnit XML 보고서 예시:

xml
<?xml version="1.0" encoding="UTF-8" ?>
<testsuites name="vitest tests" tests="2" failures="1" errors="0" time="0.503">
    <testsuite name="__tests__/test-file-1.test.ts" timestamp="2023-10-19T17:41:58.580Z" hostname="My-Computer.local" tests="2" failures="1" errors="0" skipped="0" time="0.013">
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 2 + 2 should equal 4" time="0.01">
            <failure message="expected 5 to be 4 // Object.is equality" type="AssertionError">
AssertionError: expected 5 to be 4 // Object.is equality
 ❯ __tests__/test-file-1.test.ts:20:28
            </failure>
        </testcase>
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 4 - 2 should equal 2" time="0">
        </testcase>
    </testsuite>
</testsuites>

출력된 XML에는 중첩된 testsuites 및 testcase 태그가 포함됩니다. 보고서 옵션을 사용하여 이러한 속성을 구성할 수 있습니다.

ts
export default defineConfig({
  test: {
    reporters: [
      [
        'junit',
        { suiteName: 'custom suite name', classname: 'custom-classname' },
      ],
    ],
  },
});

JSON 리포터 ​

JSON 형식으로 테스트 결과 보고서를 출력합니다. 터미널에 출력하거나 outputFile 구성 옵션을 사용하여 파일에 저장할 수 있습니다.

bash
npx vitest --reporter=json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
  },
});

JSON 보고서 예시:

json
{
  "numTotalTestSuites": 4,
  "numPassedTestSuites": 2,
  "numFailedTestSuites": 1,
  "numPendingTestSuites": 1,
  "numTotalTests": 4,
  "numPassedTests": 1,
  "numFailedTests": 1,
  "numPendingTests": 1,
  "numTodoTests": 1,
  "startTime": 1697737019307,
  "success": false,
  "testResults": [
    {
      "assertionResults": [
        {
          "ancestorTitles": ["", "first test file"],
          "fullName": " first test file 2 + 2 should equal 4",
          "status": "failed",
          "title": "2 + 2 should equal 4",
          "duration": 9,
          "failureMessages": ["expected 5 to be 4 // Object.is equality"],
          "location": {
            "line": 20,
            "column": 28
          },
          "meta": {}
        }
      ],
      "startTime": 1697737019787,
      "endTime": 1697737019797,
      "status": "failed",
      "message": "",
      "name": "/root-directory/__tests__/test-file-1.test.ts"
    }
  ]
}

HTML 리포터 ​

대화형 GUI를 통해 테스트 결과를 볼 수 있는 HTML 파일을 생성합니다. 파일이 생성된 후 Vitest는 로컬 개발 서버를 계속 실행하고 브라우저에서 보고서를 볼 수 있는 링크를 제공합니다.

outputFile 구성 옵션을 사용하여 출력 파일을 지정할 수 있습니다. outputFile 옵션이 제공되지 않으면 새 HTML 파일이 생성됩니다.

bash
npx vitest --reporter=html
ts
export default defineConfig({
  test: {
    reporters: ['html'],
  },
});

TIP

이 리포터를 사용하려면 @vitest/ui 패키지가 설치되어 있어야 합니다.

TAP 리포터 ​

Test Anything Protocol (TAP)을 따르는 보고서를 출력합니다.

bash
npx vitest --reporter=tap
ts
export default defineConfig({
  test: {
    reporters: ['tap'],
  },
});

TAP 보고서 예시:

bash
TAP version 13
1..1
not ok 1 - __tests__/test-file-1.test.ts # time=14.00ms {
    1..1
    not ok 1 - first test file # time=13.00ms {
        1..2
        not ok 1 - 2 + 2 should equal 4 # time=11.00ms
            ---
            error:
                name: "AssertionError"
                message: "expected 5 to be 4 // Object.is equality"
            at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
            actual: "5"
            expected: "4"
            ...
        ok 2 - 4 - 2 should equal 2 # time=1.00ms
    }
}

TAP 플랫 리포터 ​

TAP 평면 보고서를 출력합니다. tap 리포터와 마찬가지로 테스트 결과는 TAP 표준을 따르도록 형식이 지정되지만, 테스트 모음은 중첩된 계층 구조가 아닌 평면 목록으로 형식이 지정됩니다.

bash
npx vitest --reporter=tap-flat
ts
export default defineConfig({
  test: {
    reporters: ['tap-flat'],
  },
});

TAP 평면 보고서 예시:

bash
TAP version 13
1..2
not ok 1 - __tests__/test-file-1.test.ts > first test file > 2 + 2 should equal 4 # time=11.00ms
    ---
    error:
        name: "AssertionError"
        message: "expected 5 to be 4 // Object.is equality"
    at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
    actual: "5"
    expected: "4"
    ...
ok 2 - __tests__/test-file-1.test.ts > first test file > 4 - 2 should equal 2 # time=0.00ms

멈춤 프로세스 리포터 ​

Vitest가 안전하게 종료되는 것을 방지하는 멈춤 프로세스 목록을 표시합니다 (있는 경우). hanging-process 리포터 자체는 테스트 결과를 표시하지 않지만, 테스트가 실행되는 동안 프로세스를 모니터링하기 위해 다른 리포터와 함께 사용할 수 있습니다. 이 리포터는 리소스를 많이 소모할 수 있으므로, Vitest가 프로세스를 일관되게 종료할 수 없는 상황에서 디버깅 목적으로 사용하는 것이 좋습니다.

bash
npx vitest --reporter=hanging-process
ts
export default defineConfig({
  test: {
    reporters: ['hanging-process'],
  },
});

Github Actions 리포터 ​

테스트 실패 시 주석을 통해 알림을 제공하기 위해 워크플로 명령을 사용합니다. 이 리포터는 process.env.GITHUB_ACTIONS === 'true'일 때 default 리포터와 함께 자동으로 활성화됩니다.

기본 리포터 외에 다른 리포터를 구성하는 경우, github-actions를 명시적으로 추가해야 합니다.

ts
export default defineConfig({
  test: {
    reporters: process.env.GITHUB_ACTIONS ? ['dot', 'github-actions'] : ['dot'],
  },
});
Github ActionsGithub Actions

Blob Reporter ​

테스트 결과를 머신에 저장하여 나중에 --merge-reports 명령을 사용하여 병합할 수 있도록 합니다. 기본적으로 모든 결과는 .vitest-reports 폴더에 저장되지만, --outputFile 또는 --outputFile.blob 플래그로 재정의할 수 있습니다.

bash
npx vitest --reporter=blob --outputFile=reports/blob-1.json

--shard 플래그를 사용하여 다른 머신에서 Vitest를 실행하는 경우 이 리포터를 사용하는 것이 좋습니다. CI 파이프라인의 끝에서 --merge-reports 명령을 사용하여 모든 blob 보고서를 모든 보고서에 병합할 수 있습니다.

bash
npx vitest --merge-reports=reports --reporter=json --reporter=default

TIP

--reporter=blob과 --merge-reports는 모두 watch 모드에서 작동하지 않습니다.

사용자 정의 리포터 ​

NPM에 게시된 타사 사용자 정의 리포터는 리포터 옵션에 패키지 이름을 지정하여 사용할 수 있습니다.

bash
npx vitest --reporter=some-published-vitest-reporter
ts
export default defineConfig({
  test: {
    reporters: ['some-published-vitest-reporter'],
  },
});

또한 사용자 정의 리포터를 직접 정의하고, 파일 경로를 지정하여 사용할 수도 있습니다.

bash
npx vitest --reporter=./path/to/reporter.ts

사용자 정의 리포터는 Reporter 인터페이스를 구현해야 합니다.

Pager
이전테스트 필터링
다음커버리지

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/reporters

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2024 Mithril Contributors