Bagikan melalui


Menjalankan pengujian dengan MSTest

Ada beberapa cara untuk menjalankan pengujian MSTest tergantung pada kebutuhan Anda. Anda dapat menjalankan pengujian dari IDE (misalnya, Visual Studio, Visual Studio Code, atau JetBrains Rider), atau dari baris perintah, atau dari layanan CI (seperti GitHub Actions atau Azure DevOps).

Secara historis, MSTest mengandalkan VSTest untuk menjalankan pengujian di semua konteks tetapi dimulai dengan versi 3.2.0, MSTest memiliki runner pengujiannya sendiri. Runner baru ini lebih ringan dan lebih cepat daripada VSTest, dan ini adalah cara yang disarankan untuk menjalankan pengujian MSTest.

VSTest vs Microsoft.Testing.Platform (MTP)

MSTest mendukung menjalankan pengujian dengan VSTest dan Microsoft.Testing.Platform (MTP). Dukungan untuk MTP didukung oleh runner MSTest, yang dapat menjalankan pengujian di semua konteks (misalnya, alur integrasi berkelanjutan (CI), CLI, Visual Studio Test Explorer, dan VS Code Text Explorer). Penerap MSTest disematkan langsung dalam proyek pengujian MSTest Anda, dan tidak ada dependensi aplikasi lain, seperti vstest.console atau dotnet test, yang diperlukan untuk menjalankan pengujian Anda. Namun, Anda masih dapat menjalankan pengujian menggunakan dotnet test.

Rangkaian pengujian MSTest adalah sumber terbuka dan dibangun di pustaka Microsoft.Testing.Platform. Anda dapat menemukan Microsoft.Testing.Platform kode di repositori GitHub microsoft/testfx . Pelari MSTest dilengkapi dengan MSTest in 3.2.0 atau yang lebih baru.

Mengaktifkan Microsoft.Testing.Platform dalam proyek MSTest

Disarankan untuk menggunakan MSTest SDK karena sangat menyederhanakan konfigurasi proyek Anda dan memperbarui proyek, dan memastikan keselarasan yang tepat dari versi platform (Microsoft.Testing.Platform) dan ekstensinya.

Saat Anda menggunakan MSTest SDK, secara default Anda memilih untuk menggunakan Microsoft.Testing.Platform.

<Project Sdk="MSTest.Sdk/4.1.0">

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

</Project>

Atau Anda dapat mengaktifkan eksekutor MSTest dengan menambahkan properti EnableMSTestRunner dan mengatur OutputType ke Exe dalam file proyek Anda. Anda juga perlu memastikan bahwa Anda menggunakan MSTest 3.2.0 atau yang lebih baru. Kami sangat menyarankan Anda memperbarui ke versi MSTest terbaru yang tersedia.

Pertimbangkan contoh file proyek berikut:

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

  <PropertyGroup>
    <!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!--
      Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
      For more information, visit https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-integration-dotnet-test#show-failure-per-test
      -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

    <OutputType>Exe</OutputType>

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

  <ItemGroup>
    <!--
      MSTest meta package is the recommended way to reference MSTest.
      It's equivalent to referencing:
          Microsoft.NET.Test.Sdk
          MSTest.TestAdapter
          MSTest.TestFramework
          MSTest.Analyzers
      Starting with 3.8, it also includes:
          Microsoft.Testing.Extensions.TrxReport
          Microsoft.Testing.Extensions.CodeCoverage
    -->
    <PackageReference Include="MSTest" Version="4.1.0" />
  </ItemGroup>

</Project>

Petunjuk / Saran

Untuk memastikan semua proyek pengujian dalam solusi Anda menggunakan runner MSTest, atur EnableMSTestRunner properti dan TestingPlatformDotnetTestSupport dalam file Directory.Build.props alih-alih file proyek individual.

Konfigurasi dan filter

.runsettings

Microsoft.Testing.Platform mendukung runsettings melalui opsi --settings baris perintah. Untuk daftar lengkap entri MSTest yang didukung, lihat Mengonfigurasi MSTest: Runsettings. Perintah berikut menunjukkan berbagai contoh penggunaan.

Menggunakan dotnet run:

dotnet run --project Contoso.MyTests -- --settings config.runsettings

Menggunakan dotnet exec:

dotnet exec Contoso.MyTests.dll --settings config.runsettings

-atau-

dotnet Contoso.MyTests.dll --settings config.runsettings

Menggunakan executable:

Contoso.MyTests.exe --settings config.runsettings

Filter uji coba

Anda dapat dengan mulus menyediakan pengujian filter menggunakan opsi baris perintah --filter. Perintah berikut menunjukkan beberapa contoh.

Menggunakan dotnet run:

dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Menggunakan dotnet exec:

dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

-atau-

dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Menggunakan file yang dapat dieksekusi:

Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Lihat juga