다음을 통해 공유


dotnet test와 함께 Microsoft.Testing.Platform을 사용합니다.

이 문서에서는 Microsoft.Testing.Platform 사용 시 dotnet test를 사용하여 테스트를 실행하는 방법과 Microsoft.Testing.Platform을 통해 테스트를 실행할 때 생성되는 MSBuild 출력을 구성하는 데 사용할 수 있는 다양한 옵션에 대해 설명합니다.

이 문서에서는 dotnet test를 사용하여 Microsoft.Testing.Platform을 사용하는 솔루션(*.sln)에서 모든 테스트를 실행하는 방법을 보여 줍니다.

dotnet test 통합

dotnet test 명령은 솔루션, 프로젝트 또는 이미 빌드된 어셈블리에서 테스트를 실행하는 방법입니다. Microsoft.Testing.Platform은 이 인프라에 연결되어 특히 VSTest에서 Microsoft.Testing.Platform으로 마이그레이션할 때 테스트를 실행하는 통합된 방법을 제공합니다.

dotnet test 통합 - VSTest 모드

Microsoft.Testing.Platformdotnet test와 원활하게 작동할 수 있도록 호환성 계층(VSTest 브리지)을 제공합니다.

테스트는 다음을 실행하여 실행할 수 있습니다.

dotnet test

이 계층은 VSTest를 통해 테스트를 실행하고 VSTest 테스트 프레임워크 어댑터 수준에서 통합됩니다.

dotnet test - Microsoft.Testing.Platform 모드

기본적으로 VSTest는 Microsoft.Testing.Platform 테스트를 실행하는 데 사용됩니다. 프로젝트 파일에서 <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> 설정을 지정하여 전체 Microsoft.Testing.Platform를 활성화할 수 있습니다. 이 설정은 VSTest를 사용하지 않도록 설정하며, Microsoft.Testing.Platform.MSBuild NuGet 패키지에 대한 전이적 종속성 때문에 솔루션에서 권한이 부여된 모든 Microsoft.Testing.Platform 테스트 프로젝트를 직접 실행합니다. 직접 Microsoft.Testing.Platform 테스트 프로젝트를 통과하면 원활하게 작동합니다.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <!-- Add this to your project file. -->
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

  </PropertyGroup>

  <!-- ... -->

</Project>

이 모드에서는 다음 방법 중 하나로 테스트 애플리케이션을 호출할 때 사용되는 추가 매개 변수를 제공할 수 있습니다.

  • Microsoft.Testing.Platform 버전 1.4(MSTest 버전 3.6에 포함됨)부터 명령줄에서 이중 대시 -- 후 옵션을 추가할 수 있습니다.

    dotnet test -- --minimum-expected-tests 10
    
  • 명령줄에서 TestingPlatformCommandLineArguments MSBuild 속성을 사용하여 다음을 수행합니다.

    dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
    

    프로젝트 파일에서

    <PropertyGroup>
      ...
      <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
    </PropertyGroup>
    

추가 MSBuild 옵션

MSBuild 통합은 프로젝트 파일에서 지정하거나 명령줄의 전역 속성을 통해 지정할 수 있는 옵션을 제공합니다(예: -p:TestingPlatformShowTestsFailure=true).

사용 가능한 옵션은 다음과 같습니다.

테스트당 실패 표시

기본적으로 테스트 실패는 .log 파일로 요약되고 테스트 프로젝트당 단일 실패가 MSBuild에 보고됩니다.

실패한 테스트당 오류를 표시하려면 명령줄에서 -p:TestingPlatformShowTestsFailure=true를 지정하거나 프로젝트 파일에 <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> 속성을 추가합니다.

명령줄에서:

dotnet test -p:TestingPlatformShowTestsFailure=true

또는 프로젝트 파일에서:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

전체 플랫폼 출력 표시

기본적으로 기본 테스트 실행 파일이 작성하는 모든 콘솔 출력은 캡처되어 사용자에게 숨겨집니다. 여기에는 배너, 버전 정보 및 형식화된 테스트 정보가 포함됩니다.

MSBuild 출력과 함께 이 정보를 표시하려면 <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>을 사용합니다.

이 옵션은 테스트 프레임워크가 Console.WriteLine에 의해 작성된 사용자 출력을 캡처하는 방법이나 콘솔에 쓰는 다른 유사한 방법에 영향을 주지 않습니다.

명령줄에서:

dotnet test -p:TestingPlatformCaptureOutput=false

또는 프로젝트 파일에서:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>