MTP(Microsoft.Testing.Platform)를 사용한 dotnet test

이 문서는 10 SDK 이상 버전에 .NET: ✔️ 적용됩니다.

이름

dotnet test - MTP를 사용하여 단위 테스트를 실행하는 데 사용되는 테스트 드라이버를 .NET.

개요

dotnet test
    [<PROJECT_OR_TRAVERSAL_PATH>]
    [--project <PROJECT_PATH>]
    [--solution <SOLUTION_PATH>]
    [--test-modules <EXPRESSION>]
    [--root-directory <ROOT_PATH>]
    [--max-parallel-test-modules <NUMBER>]
    [--config-file <CONFIG_FILE>]
    [--results-directory <RESULTS_DIRECTORY>]
    [--results-directory-layout <flat|per-module>]
    [--diagnostic-output-directory <DIAGNOSTIC_OUTPUT_DIRECTORY>]
    [--minimum-expected-tests <NUMBER>]
    [--maximum-failed-tests <NUMBER>]
    [--timeout <DURATION>]
    [-e|--environment <NAME="VALUE">]
    [-a|--arch <ARCHITECTURE>]
    [--artifacts-path <ARTIFACTS_DIR>]
    [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>]
    [--os <OS>]
    [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--use-current-runtime|--ucr]
    [-v|--verbosity <LEVEL>]
    [--no-build]
    [--no-dependencies]
    [--no-restore]
    [--nologo|--no-logo|--no-banner]
    [--no-ansi]
    [--no-progress]
    [--no-artifact-post-processing]
    [--output <VERBOSITY_LEVEL>]
    [--show-test-results <OUTCOME>]
    [--list-tests [text|json]]
    [--no-launch-profile]
    [--no-launch-profile-arguments]
    [--device <DEVICE_ID>]
    [--list-devices]
    [--collect-test-map]
    [--affected-tests]
    [<args>...]

dotnet test -h|--help

Description

MTP를 dotnet test 사용하면 VSTest보다 더 빠르게 작동합니다. 테스트 관련 인수는 테스트 project 등록된 확장에 연결되어 있으므로 더 이상 수정되지 않습니다. 또한 MTP는 테스트를 실행할 때 globbing 필터를 지원합니다. 자세한 내용은 MTP를 참조하세요.

Important

확장 관련 옵션은 MTP에 기본 제공되지 않습니다. 각 대상 테스트 애플리케이션은 옵션을 제공하는 확장을 등록해야 합니다. 확장의 NuGet 패키지를 직접 추가하거나 패키지를 포함하는 테스트 SDK 구성 또는 프로필을 사용합니다. 그렇지 않으면 옵션이 인식할 수 없으므로 종료 코드 5와 함께 테스트 실행이 실패합니다. 실행 dotnet test --help 하여 선택한 테스트 애플리케이션에 사용할 수 있는 옵션을 확인하고 시나리오별 확장 옵션을 참조하여 옵션에 대한 패키지를 찾습니다.

경고

MTP를 통해 global.jsondotnet test 옵트인하는 경우 모든 테스트 프로젝트에서 MTP를 사용해야 합니다. 테스트 프로젝트 중에서 VSTest를 사용하는 경우 오류가 발생합니다.

버전 요구 사항

MTP 모드 dotnet test 에는 .NET 10 SDK 및 MTP 1.7 이상이 필요합니다. .NET 10 이후에 추가된 옵션에는 다음 섹션에서 개별 SDK 버전 요구 사항이 있습니다. 또한 SDK는 각 테스트 애플리케이션이 해당 기능을 구현하는 동안 전체 실행을 조정하기 때문에 일부 옵션에는 최신 MTP 패키지가 필요합니다.

암시적 복원

dotnet restore, dotnet new, dotnet build, dotnet run, dotnet test및 dotnet publish같은 복원이 필요한 모든 명령에서 암시적으로 실행되므로 dotnet pack 실행할 필요가 없습니다. 암시적 복원을 사용하지 않도록 설정하려면 --no-restore 옵션을 사용합니다.

명령은 Azure DevOps Services 또는 복원이 발생하는 시기를 명시적으로 제어해야 하는 빌드 시스템에서 연속 통합 빌드와 같이 명시적으로 복원하는 것이 적합한 특정 시나리오에서 여전히 유용합니다.

NuGet 피드를 관리하는 방법에 대한 자세한 내용은 dotnet restore 설명서참조하세요.

Important

프로젝트 또는 솔루션을 --no-restore실행하는 경우 복원 생성 프로젝트 상태를 obj 폴더에 유지하고 일치하는 전역 패키지 폴더를 모두 사용할 수 있습니다. 테스트 프레임워크 및 플랫폼 패키지 가져오기는 MTP 테스트 애플리케이션을 식별하는 데 사용하는 MSBuild 속성을 dotnet test 설정합니다. 이 --no-build 옵션은 또한 을 의미합니다 --no-restore. 테스트 환경에 빌드된 테스트 애플리케이션이 포함되어 있지만 프로젝트 복원 상태가 아닌 경우 대신 사용합니다 --test-modules . 자세한 내용은 No test projects were found를 참조하세요.

Options

비고

--project, --solution 또는 --test-modules 옵션 중 하나만 사용할 수 있습니다. 이러한 옵션은 결합할 수 없습니다. 또한 사용하는 --test-modules경우 , , --configuration, --list-devices--device--framework--os--runtime, 또는 --use-current-runtime를 지정할 --arch수 없습니다. 이러한 옵션을 사용하려면 프로젝트 평가가 필요하거나 이미 빌드된 모듈과 관련이 없습니다.

  • PROJECT_OR_TRAVERSAL_PATH

    실행할 프로젝트 또는 순회 프로젝트를 지정합니다. .NET 11 Preview 7 dotnet test 부터 프로젝트(예: dirs.proj)를 지원하고 Microsoft.Build.Traversal 참조된 테스트 프로젝트를 재귀적으로 실행합니다.

    .NET 12 Preview 1부터 인수는 C# 파일 기반 MTP 테스트 앱을 식별할 수도 있습니다. 파일 기반 테스트 앱은 지원하지 --device않습니다.

  • --project <PROJECT_PATH>

    실행할 project 파일의 경로(폴더 이름 또는 전체 경로)를 지정합니다. 지정하지 않으면 현재 디렉터리로 기본 설정됩니다.

  • --solution <SOLUTION_PATH>

    실행할 솔루션 파일의 경로(폴더 이름 또는 전체 경로)를 지정합니다. 지정하지 않으면 현재 디렉터리로 기본 설정됩니다.

  • --test-modules <EXPRESSION>

    파일 globbing을 사용하여 테스트 모듈을 필터링합니다. 해당 테스트 모듈에 속하는 테스트만 실행됩니다. 이 옵션은 프로젝트를 평가하지 않으므로 프로젝트 복원 상태를 사용할 수 없는 경우 이미 빌드된 테스트 애플리케이션을 실행하는 데 사용합니다. .NET 11 Preview 6부터 일치하는 모듈을 제외하기 위한 패턴 ! 접두사를 추가합니다. 여러 패턴을 세미콜론으로 구분합니다. 각 패턴 주위의 공백은 무시됩니다.

  • --root-directory <ROOT_PATH>

    --test-modules 옵션의 루트 디렉터리를 지정합니다. --test-modules 옵션에서만 사용할 수 있습니다.

  • --max-parallel-test-modules <NUMBER>

    병렬로 실행할 수 있는 최대 테스트 모듈 수를 지정합니다. 기본값은 Environment.ProcessorCount입니다.

  • --config-file <CONFIG_FILE>

    테스트 실행에 사용할 구성 파일을 지정합니다. 상대 경로가 제공되면 현재 디렉터리에 따라 절대 경로로 변환됩니다. 구성 파일 설정에 대한 자세한 내용은 testconfig.json참조하세요.

  • --results-directory <RESULTS_DIRECTORY>

    테스트 결과가 저장되는 디렉터리를 지정합니다. 디렉터리가 없으면 생성됩니다. 상대 경로가 제공되면 현재 디렉터리에 따라 절대 경로로 변환됩니다.

  • --results-directory-layout <flat|per-module>

    다중 모듈 실행에서 결과 디렉터리 아래에 파일을 구성하는 방법을 지정합니다. 기본값은 flat모든 결과를 동일한 디렉터리에 씁니다. per-module 는 각 모듈의 결과를 기록하여 <project>/<target-framework>_<runtime-or-architecture>동일한 파일 이름을 가진 보고서가 서로 덮어쓰지 않도록 합니다.

    .NET 11 RC 1부터 사용할 수 있습니다.

  • --diagnostic-output-directory <DIAGNOSTIC_OUTPUT_DIRECTORY>

    진단 출력이 저장되는 디렉터리를 지정합니다. 디렉터리가 없으면 생성됩니다. 상대 경로가 제공되면 현재 디렉터리에 따라 절대 경로로 변환됩니다.

  • --minimum-expected-tests <NUMBER>

    전체 실행에 대한 양의 최소 테스트 수를 지정합니다. 집계된 테스트 수가 지정된 최소값보다 작으면 종료 코드 9로 테스트 실행이 실패합니다. 전역 개수에는 건너뛴 테스트가 포함됩니다. 종료 코드에 대한 자세한 내용은 MTP 종료 코드를 참조하세요.

    이 옵션은 앞에 --표시되므로 전역(전체 실행) 옵션입니다. 대신 각 테스트 모듈에 대해 최소값을 요구하려면 모든 테스트 모듈에 전달되도록 옵션을 -- 전달합니다. 자세한 내용은 전체 실행 및 모듈별 최소값을 참조하세요.

    비고

    전역 최소값에는 .NET 10 SDK(10.0.100) 이상 버전이 필요합니다.

  • --maximum-failed-tests <NUMBER>

    실패한 테스트, 오류, 시간 초과 또는 취소된 테스트의 지정된 수에 도달한 후 전체 실행을 중지합니다. 코드 13을 사용하여 실행이 종료됩니다.

    .NET 11 미리 보기 7부터 사용할 수 있으며 MTP 2.4 이상이 필요합니다.

  • --timeout <DURATION>

    하나 이상의 테스트 애플리케이션이 실행되는 동안 지정된 기간 후에 전체 실행을 중지합니다. 양수 뒤에 단위(예: 500ms, 90s, 2h10m또는 1d)를 지정합니다. 시간 제한 실행은 코드 3과 함께 종료됩니다.

    .NET 11 미리 보기 7부터 사용할 수 있으며 MTP 2.4 이상이 필요합니다.

  • -e|--environment <NAME="VALUE">

    테스트 프로세스에 대한 환경 변수를 설정합니다. 옵션을 여러 번 지정하여 여러 변수를 설정합니다. 명령줄 값은 시작 프로필의 값을 재정의합니다.

    시작 프로필이 없거나 지정--no-launch-profile하는 경우 .NET SDK 10.0.110 이상을 사용합니다. 이전 .NET 10개의 SDK 버전은 이러한 경우 변수를 무시할 수 있습니다. .NET 11 Preview 7부터 변수는 기능 인식 빌드, 디바이스 선택, 배포 및 실행 인수 대상으로도 전달됩니다.

  • -a|--arch <ARCHITECTURE>

    대상 아키텍처를 지정합니다. 이는 제공된 값이 기본 RID와 결합되는 RID(런타임 식별자)를 설정하는 약식 구문입니다. 예를 들어, win-x64 머신에서 --arch x86을 지정하면 RID가 win-x86으로 설정됩니다. 이 옵션을 사용하는 경우 -r|--runtime 옵션을 사용하지 마세요. .NET 6 미리 보기 7부터 사용할 수 있습니다.

  • --artifacts-path <ARTIFACTS_DIR>

    실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃참조하세요. 이 옵션 및 제공된 값은 다른 dotnet 명령의 출력(예: 사용 dotnet 시 및 dotnet build --no-restore.)에 따라 달라지는 모든 dotnet publish --no-build 명령에서 명시적으로 연계되어야 합니다. .NET 8 SDK부터 사용할 수 있습니다.

    .NET 11부터 MTP 모드에 사용할 수 있습니다.

  • -c|--configuration <CONFIGURATION>

    빌드 구성을 정의합니다. 대부분의 프로젝트의 기본값은 Debug이지만 project 빌드 구성 설정을 재정의할 수 있습니다.

  • -f|--framework <FRAMEWORK>

    테스트를 실행할 대상 프레임워크의 TFM(대상 프레임워크 모니커)입니다. 대상 프레임워크도 project 파일에 지정해야 합니다.

  • --os <OS>

    대상 운영 체제(OS)를 지정합니다. 이는 제공된 값이 기본 RID와 결합되는 RID(런타임 식별자)를 설정하는 약식 구문입니다. 예를 들어, win-x64 머신에서 --os linux을 지정하면 RID가 linux-x64으로 설정됩니다. 이 옵션을 사용하는 경우 -r|--runtime 옵션을 사용하지 마세요. .NET 6부터 사용할 수 있습니다.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    테스트할 대상 런타임입니다.

    약식 -r .NET SDK 7부터 사용할 수 있습니다.

    비고

    전역 RuntimeIdentifier 속성이 있는 솔루션에 대한 테스트 실행(명시적 또는 통해 --arch--runtime또는 --os)은 지원되지 않습니다. 대신 개별 project 수준에서 RuntimeIdentifier 설정합니다.

  • --use-current-runtime|--ucr

    복원 및 빌드 중에 현재 런타임을 대상 런타임으로 사용합니다.

    .NET 11 미리 보기 6부터 사용할 수 있습니다. 이 옵션을 .와 --test-modules결합할 수 없습니다.

  • -v|--verbosity <LEVEL>

    명령의 세부 정보 표시 수준을 설정합니다. 허용되는 값은 q[uiet], m[inimal], n[ormal], d[etailed]및 diag[nostic]. 자세한 내용은 LoggerVerbosity를 참조하세요.

  • --no-build

    테스트 project 실행하기 전에 빌드되지 않도록 지정합니다. 또한 --no-restore 플래그를 암시적으로 설정합니다.

  • --no-dependencies

    프로젝트-프로젝트 참조 빌드를 건너뜁니다.

    .NET 11 미리 보기 6부터 사용할 수 있습니다.

  • --no-restore

    명령을 실행할 때 암시적 복원이 실행되지 않도록 지정합니다.

  • --nologo|--no-logo|--no-banner

    .NET 및 MTP 시작 배너를 표시하지 않습니다. -nologo 및 /nologo 양식 및 DOTNET_NOLOGO 환경 변수도 지원됩니다.

    .NET 11 미리 보기 7부터 MTP 모드에서 사용할 수 있습니다.

  • --no-ansi

    화면에 ANSI 이스케이프 문자를 출력하지 않도록 설정합니다.

  • --no-progress

    화면에 대한 보고 진행률을 사용하지 않도록 설정합니다.

  • --no-artifact-post-processing

    다중 모듈을 실행한 후 호환되는 아티팩트 후 처리를 사용하지 않도록 설정합니다. .NET 11 RC 1 및 MTP 2.4부터 등록된 아티팩트 포스트 프로세서는 TRX 결과와 같은 호환되는 보고서를 결합할 수 있습니다. 사후 처리에 실패하면 SDK는 원래 아티팩트와 테스트 종료 코드를 유지합니다.

  • --output <VERBOSITY_LEVEL>

    테스트 결과의 출력 세부 정보를 지정합니다. 유효한 값은 Minimal, Normal 및 Detailed입니다. 기본값은 Normal입니다. Minimal 에는 MTP 2.4 미리 보기가 필요합니다.

  • --show-test-results <OUTCOME>

    결과별로 결과 블록을 선택합니다. MTP 2.4 미리 보기passed에서 , failed, skippedall또는 none. 값에는 failed 오류, 시간 제한 및 취소도 포함됩니다.

    passed failed쉼표, skipped 공백 또는 반복 --show-test-results 옵션을 사용하여 결합합니다. 다른 값과 결합하거나 none 결합 all 하지 마세요. 이 명시적 옵션은 옵션 순서에 --output 관계없이 사전 설정을 재정의합니다.

  • --list-tests [text|json]

    검색된 테스트를 실행하지 않고 나열합니다. 값을 생략하거나 사람이 읽을 수 있는 출력을 지정 text 합니다. .NET 11 Preview 7부터 어셈블리, 대상 프레임워크 및 아키텍처별로 테스트를 그룹화하고 사용 가능한 식별자, 원본 위치, 메서드, 매개 변수 및 특성을 포함하는 버전이 지정된 JSON 문서를 지정 json 합니다.

  • --no-launch-profile

    launchSettings.json 사용하여 애플리케이션을 구성하지 마세요. 기본적으로 launchSettings.json 환경 변수 및 명령줄 인수를 테스트 실행 파일에 적용할 수 있는 사용 됩니다.

  • --no-launch-profile-arguments

    시작 프로필에서 지정한 인수를 commandLineArgs 사용하여 애플리케이션을 실행하지 마세요.

  • --device <DEVICE_ID>

    Android 또는 iOS 테스트 프로젝트의 각 대상 프레임워크에 대한 디바이스, 에뮬레이터 또는 시뮬레이터를 선택합니다. MTP 경로는 macOS 및 Mac Catalyst 테스트 프로젝트도 지원합니다. 입력이 대화형이고 둘 이상의 디바이스를 사용할 수 있는 dotnet test 경우 하나 이상의 디바이스를 선택하라는 메시지를 표시할 수 있습니다.

    .NET 11 미리 보기 6부터 사용할 수 있습니다. 다중 대상 프로젝트의 경우 .NET 11 RC 2 이상을 사용하여 디바이스 검색이 각 대상 프레임워크를 올바르게 평가합니다. 브라우저 WebAssembly 테스트 프로젝트는 이 옵션에서 지원되지 않습니다.

  • --list-devices

    테스트를 실행하지 않고 프로젝트에 사용할 수 있는 디바이스를 나열합니다. 솔루션이 아닌 프로젝트를 지정합니다.

    .NET 11 미리 보기 7부터 사용할 수 있습니다.

  • --collect-test-map 및 --affected-tests

    리포지토리 테스트 맵을 수집하거나 변경의 영향을 받는 테스트를 실행합니다. 이러한 실험적 옵션에는 별도로 분산된 확장 및 환경 변수가 DOTNET_CLI_ENABLE_AFFECTED_TESTS=1 필요합니다. 두 옵션을 결합할 수 없습니다. 영향을 받는 테스트 워크플로는 디바이스 테스트, 병렬 테스트 모듈 또는 최소 테스트 정책도 지원하지 않습니다.

    .NET 11 RC 1부터 사용할 수 있습니다.

  • --property:<NAME>=<VALUE>

    하나 이상의 MSBuild 속성을 설정합니다. 옵션을 반복하여 여러 속성을 지정합니다.

    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    약식 -p는 --property 대신 사용할 수 있습니다. /property:property=value 동일하게 적용되며 짧은 형식은 /p. 사용 가능한 인수에 대한 자세한 내용은 dotnet msbuild 설명서에서 확인할 수 있습니다.

  • -?|-h|--help

    명령을 사용하는 방법에 대한 설명을 출력합니다.

  • args

    테스트 애플리케이션에 전달할 추가 인수를 지정합니다. 여러 개의 인수를 구분하려면 공백을 사용합니다. 전달할 내용에 대한 자세한 내용과 예제는 MTP 개요 및 MTP 기능을 참조하세요.

    팁 (조언)

    특정 프로젝트에 대한 추가 인수를 지정하려면 TestingPlatformCommandLineArguments MSBuild 속성을 사용합니다. 이 속성은 솔루션이 테스트 프레임워크(예: MSTest 및 xUnit.net)를 혼합하거나 일부 프로젝트만 특정 확장을 참조하는 경우에 특히 유용합니다. 자세한 내용은 혼합 테스트 프레임워크 또는 확장이 있는 솔루션을 참조하세요.

비고

파일에 대한 추적 로깅을 사용하도록 설정하려면 환경 변수 DOTNET_CLI_TEST_TRACEFILE 사용하여 추적 파일의 경로를 제공합니다.

.NET 11 RC 1부터 다중 프로젝트, dotnet test -bl 다중 대상 및 디바이스 실행에 대해 하나의 MSBuild 세션을 사용하므로 이진 로그에 전체 빌드가 포함됩니다.

출력 및 취소 동작

.NET 11 Preview 6부터 대화형 ANSI 출력은 현재 실행 중인 테스트와 어셈블리별 테스트 수를 보고합니다. 출력이 리디렉션되거나, ANSI 또는 진행률 출력이 비활성화되거나, 환경이 대화형이 아닌 경우 진행률 표시가 비활성화된 상태로 유지됩니다.

.NET 11 Preview 6부터 첫 번째 Ctrl+C는 새 테스트 애플리케이션 예약을 중지하고 협조적 취소를 요청합니다. Ctrl+C를 다시 눌러 자식 프로세스를 즉시 종료합니다. 중단된 실행은 코드 3과 함께 종료됩니다.

라이브 테스트 호스트 출력에는 프로토콜 1.1 이상을 지원하는 MTP 호스트가 필요합니다. 이전 호스트는 출력을 캡처된 상태로 유지하고 실패한 모듈에 대해 재생합니다. .NET 11 Preview 7부터 오류 요약은 캡처된 표준 출력을 처음 30줄과 마지막 10줄까지 40줄 이상 자른 다음 진단 로그는 전체 출력을 유지합니다.

다중 모듈 실행 dotnet test 의 경우 .NET 11 미리 보기 7부터 전체 실행에서 0 테스트 결과를 평가합니다. 명시적 최소 테스트 정책에 더 많은 테스트가 필요하지 않은 한 다른 모듈이 테스트를 성공적으로 실행하는 경우 테스트가 없는 모듈은 실행에 실패하지 않습니다.

결과 및 아티팩트

SDK 아티팩트 출력 레이아웃을 사용하도록 설정하면 .NET 11 RC 1 이상 버전에서는 기본적으로 MTP 보고서, 검사 파일 및 진단을 배치합니다<ArtifactsPath>/test/<project>/<pivot>. 명시적 --results-directory 이거나 --results-directory-layout 우선합니다.

.NET 11 RC 1 및 MTP 2.4부터 호환되는 확장은 다중 모듈 실행에서 아티팩트를 사후 처리할 수 있습니다. 예를 들어 TRX 확장은 모듈별 보고서를 유지하면서 병합된 보고서를 만들 수 있습니다. 확장 및 보고서 요구 사항은 MTP 테스트 보고서를 참조하세요.

테스트 애플리케이션에 인수 전달

dotnet test 는 인식할 수 없는 토큰을 테스트 애플리케이션에 전달합니다. 인식할 수 없는 옵션 이름과 해당 값 사이에 인식된 옵션이 나타나면 인식된 옵션을 제거하면 남은 토큰이 테스트 애플리케이션의 옵션에 바인딩되는 방식이 변경될 수 있습니다. 이러한 모호성을 방지하려면 리터럴 --뒤의 테스트 애플리케이션 인수를 배치합니다.

dotnet test --results-directory TestResults -- --report-trx --report-trx-filename A.trx

앞의 Microsoft.Testing.Extensions.TrxReport 예제에서는 직접 패키지 참조 또는 패키지가 포함된 테스트 SDK 구성을 통해 패키지를 필요로 합니다.

동일한 파서 동작이 적용됩니다dotnet run.dotnet build 자세한 예제는 참조에서 애플리케이션에 인수 전달을 참조하세요 dotnet run .

전체 실행 및 모듈별 최소값

의 경우 --minimum-expected-tests구분 기호는 -- 옵션의 범위를 결정합니다.

  • 이전--의 인수는 전역입니다. 오케스트레이터는 dotnet test 전체 실행에 대해 해석합니다.
  • 이후--의 인수는 로컬입니다. dotnet test 각 테스트 모듈에 전달하므로 각 모듈은 독립적으로 적용됩니다.

두 범위 모두에서 사용할 수 있으므로 --minimum-expected-tests 전체 실행, 각 모듈 또는 둘 다에 대해 최소값을 요구할 수 있습니다.

dotnet test --minimum-expected-tests 5 -- --minimum-expected-tests 2

앞의 명령은 전체 실행에서 5개 이상의 테스트와 각 테스트 모듈에서 2개 이상의 테스트가 필요합니다.

두 범위는 건너뛴 테스트 수를 다르게 계산합니다.

Scope 건너뛴 테스트는 최소값으로 계산합니까?
글로벌 Yes. 집계된 총계에는 dotnet test 건너뛴 테스트가 포함됩니다.
모듈당 No. MTP는 실행된 테스트 수에서 건너뛴 테스트를 제외합니다.

.NET 11 SDK부터 전체 실행에 대한 0 테스트 평결은 집계된 결과에서 한 번 결정됩니다. 예를 들어 전역으로 인해 --test-modules--filter테스트와 일치하지 않는 모듈은 코드 8(ZeroTests)로 종료되지만 결과가 집계되기 전에 해당 코드가 성공으로 정규화됩니다. 결과적으로 단일 빈 모듈이 전체 실행에 실패하지는 않지만 모듈은 가시성을 Exit code: 8 위해 출력에 진단을 유지합니다.

MTP 4.3.0 이상 버전에서 제공합니다 --zero-tests-policy <allow-skipped|strict>. 기본값인 allow-skipped를 사용하면 건너뛴 모듈이 성공할 수 있습니다. 이 값은 strict 건너뛴 테스트를 실행되지 않는 것으로 처리하므로 건너뛴 모듈은 코드 8로 종료됩니다. 각 테스트 모듈에 전달한 후 -- 옵션을 전달합니다.

dotnet test -- --zero-tests-policy strict

전역 최소값을 설정하지 않으면 .NET 11 SDK는 전체 실행 제로 테스트 평결을 별도로 결정합니다. 모든 건너뛴 전체 실행은 모듈 --zero-tests-policy 별 값에 관계없이 코드 8로 종료됩니다.

지정 --minimum-expected-tests 하고 최소값이 충족되지 않으면 종료 코드 9(MinimumExpectedTestsPolicyViolation)로 실행이 실패합니다. 이 코드는 8과 구별되므로 더 엄격한 전역 또는 모듈별 최소값이 빈 모듈과 혼동되지 않습니다. 모듈이 0개의 테스트를 실행할 때 코드 9를 반환하려면 모듈별 최소값이 MTP 4.4.0 이상 버전을 사용해야 합니다.

비고

--minimum-expected-tests 0 가 잘못되었습니다. 0 테스트 종료 코드를 표시하지 않으면 .를 사용합니다 --ignore-exit-code 8.

.NET 11 Preview 6 --tl--terminallogger--tlp 부터 테스트 애플리케이션 대신 MSBuild로 전달됩니다. .NET 12 미리 보기 1부터 인식된 -mt 양식과 -multiThreaded 양식도 MSBuild로 전달됩니다. 이러한 이름 중 하나를 사용하여 애플리케이션 옵션을 전달하려면 다음 위치에 배치합니다 --.

실행 모드 옵션(예: --help )을 --list-tests 직접 전달합니다 dotnet test. .NET 11 Preview 6부터 SDK는 테스트 애플리케이션과 협상된 실행 모드의 유효성을 검사합니다. 시작 프로필 또는 TestingPlatformCommandLineArguments 이러한 옵션 중 하나를 삽입하는 경우 요청된 SDK 작업 및 애플리케이션 작업이 일치하지 않으며 진단과 함께 실행이 실패합니다.

예시

  • 현재 디렉터리의 project 또는 솔루션에서 테스트를 실행합니다.

    dotnet test
    
  • TestProject project 테스트를 실행합니다.

    dotnet test --project ./TestProject/TestProject.csproj
    
  • TestProjects 솔루션에서 테스트를 실행합니다.

    dotnet test --solution ./TestProjects/TestProjects.sln
    
  • TestProject.dll 어셈블리를 사용하여 테스트를 실행합니다.

    dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll"
    
  • 루트 디렉터리에서 TestProject.dll 어셈블리를 사용하여 테스트를 실행합니다.

    dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll" --root-directory "c:\code"
    
  • .NET 11 Preview 7 이상을 사용하여 순회 프로젝트에서 참조하는 모든 테스트 프로젝트를 실행합니다.

    dotnet test dirs.proj
    
  • .NET 11 Preview 7 이상을 사용하여 테스트를 JSON으로 나열합니다.

    dotnet test --list-tests json
    
  • .NET 12 Preview 1 이상을 사용하여 C# 파일 기반 MTP 테스트 앱을 실행합니다.

    dotnet test App.Tests.cs
    
  • Microsoft 코드 검사 확장을 사용하여 현재 디렉터리에서 테스트를 실행합니다. 테스트 애플리케이션은 직접 또는 이를 포함하는 테스트 SDK 구성을 통해 참조 Microsoft.Testing.Extensions.CodeCoverage해야 합니다.

    dotnet test --coverage
    
  • 테스트를 실행하고 특정 디렉터리에 결과를 저장합니다.

    dotnet test --results-directory ./TestResults
    
  • 특정 디렉터리에서 진단 출력을 사용하여 테스트를 실행합니다.

    dotnet test --diagnostic-output-directory ./Diagnostics
    
  • 테스트를 실행하여 10개 이상의 테스트가 실행되도록 합니다.

    dotnet test --minimum-expected-tests 10
    
  • 전체 실행에서 5개 이상의 테스트와 각 테스트 모듈에서 2개 이상의 테스트가 필요합니다.

    dotnet test --minimum-expected-tests 5 -- --minimum-expected-tests 2
    
  • TestProject project 테스트를 실행하여 -bl(이진 로그) 인수를 msbuild 제공합니다.

    dotnet test --project ./TestProject/TestProject.csproj -bl
    
  • TestProject project 테스트를 실행하고 MSBuild DefineConstants 속성을 DEV 설정합니다.

    dotnet test --project ./TestProject/TestProject.csproj -p:DefineConstants="DEV"
    

참고하십시오