MSTest ile test çalıştırma

Tavsiye

Çalıştırıcı yapılandırmasını seçmeden önce Test platformları genel bakış'a bakın.

gereksinimlerinize bağlı olarak MSTest testlerini çalıştırmanın birkaç yolu vardır. Testleri bir IDE'den (örneğin, Visual Studio, Visual Studio Code veya JetBrains Rider) ya da komut satırından ya da ci hizmetinden (GitHub Actions veya Azure DevOps gibi) çalıştırabilirsiniz.

Geçmişte MSTest, tüm bağlamlarda testleri çalıştırmak için VSTest kullanırdı ancak 3.2.0 sürümünden başlayarak MSTest'in kendi test çalıştırıcısı vardır. Bu yeni çalıştırıcı, VSTest'ten daha hafif ve daha hızlıdır ve MSTest testlerinin çalıştırılması için önerilen yöntemdir.

VSTest vs MTP

MSTest hem VSTest hem de Microsoft.Testing.Platform (MTP) ile test çalıştırmayı destekler. MTP desteği, tüm bağlamlarda (örneğin, sürekli tümleştirme (CI) pipelines, CLI, Visual Studio Test Gezgini ve VS Code Metin Gezgini) testleri çalıştırabilen MSTest çalıştırıcısı tarafından desteklenir. MSTest çalıştırıcısı doğrudan MSTest test projenize gömülüdür ve testlerinizi çalıştırmak için vstest.console veya dotnet test gibi başka uygulama bağımlılıkları yoktur. Ancak, kullanarak dotnet testtestlerinizi yine de çalıştırabilirsiniz.

MSTest çalıştırıcısı açık kaynak ve MTP kitaplığında oluşturulur. Microsoft.Testing.Platform kodunu microsoft/testfx GitHub deposunda bulabilirsiniz. MSTest çalıştırıcısı MSTest in 3.2.0 veya daha yenisi ile birlikte paketlenmiştir.

MSTest projesinde MTP'yi etkinleştirme

Proje yapılandırmanızı, sürüm yönetiminizi ve MTP ile uzantılarının hizalamasını büyük ölçüde basitleştirmek için MSTest SDK'sını kullanın.

MSTest.Sdk, proje SDK'sı olarak Microsoft.NET.Sdk yerine geçer ve MTP varsayılan olarak etkinleştirilir:

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

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

</Project>

Note

MSTest.Sdk yalnızca projenizin temel SDK'sı olarak kullanabildiği Microsoft.NET.Sdk durumlarda çalışır. Projeniz farklı bir SDK gerektiriyorsa <Project Sdk="..."> değerini MSTest.Sdk ile değiştirmeyin.

Örneğin, bazı ASP.NET Core tümleştirme testi projeleri kullanırMicrosoft.NET.Sdk.Web. MSTest.Sdk, Microsoft.NET.Sdk öğesinden türetilir, bu nedenle Microsoft.NET.Sdk.Web tarafından sağlanan ASP.NET Core SDK hedeflerini içeri aktarmıyor.

MSTest'i kullanmak MSTest.Sdkyerine el ile de yapılandırabilirsiniz. Projeniz farklı bir üst düzey SDK'ya (örneğin, Microsoft.NET.Sdk.Web) ihtiyaç duyduğunda el ile yapılandırma gereklidir, ancak bunu standart Microsoft.NET.Sdkile de seçebilirsiniz. Proje dosyanıza EnableMSTestRunner özelliğini ekleyin ve OutputType değerini Exe olarak ayarlayın. Ardından projenizin gerektirdiği MSTest başvurularını ekleyin. MSTest 3.2.0 veya üzerini kullandığınızdan emin olun ve kullanılabilir en son MSTest sürümüne güncelleştirin.

Aşağıdaki örnek project dosyasını göz önünde bulundurun:

<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/unit-testing-with-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>

Tavsiye

Çözümünüzdeki tüm test projelerinin MSTest çalıştırıcısını kullandığından emin olmak için tek tek project dosyaları yerine EnableMSTestRunner dosyasında TestingPlatformDotnetTestSupport ve özelliklerini ayarlayın.

Yapılandırmalar ve filtreler

.runsettings

MTP, komut satırı seçeneği aracılığıyla --settings destekler. Desteklenen MSTest girdilerinin tam listesi için bkz. MSTest: Runsettings'i yapılandırma. Aşağıdaki komutlar çeşitli kullanım örneklerini gösterir.

dotnet runkullanma:

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

dotnet execkullanma:

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

-veya-

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

Yürütülebilir dosyayı kullanma:

Contoso.MyTests.exe --settings config.runsettings

Testler filtresi

Komut satırı seçeneğini kullanarak test filtresini sorunsuz bir şekilde sağlayabilirsiniz --filter. Aşağıdaki komutlarda bazı örnekler gösterilmektedir.

dotnet runkullanma:

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

dotnet execkullanma:

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

-veya-

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

Yürütülebilir dosyayı kullanma:

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

Ayrıca bakınız