Aracılığıyla paylaş


'dotnet test' ile test etme

Bu makale, CLI komutuyla ilgili içgörüler sağlar, hem VSTest hem de Microsoft.Testing.Platform (MTP) ile geçmiş uyumluluğunu da kapsar.

dotnet test komutu iki birincil modda çalışır:

Tavsiye

CLI başvurusu için bkz. dotnet test.

VSTest modu dotnet test

VsTest, uzun bir süredir .NET'teki tek test platformuydu. Sonuç olarak, dotnet test VSTest için özel olarak tasarlanmıştır ve tüm komut satırı seçenekleri VSTest'e uyarlanmıştır.

Bu işlem, VSTest MSBuild hedefini çağırmayı içerir, bu hedef diğer iç hedefleri çalıştırmayı tetikler ve sonuçta vstest.console'u çalıştırır. Tüm dotnet test komut satırı seçenekleri vstest.console'da eşdeğerlerine çevrilir.

VSTest moduyla MTP projelerini çalıştırma

dotnet test VSTest projelerini VSTest modunda çalıştırmak için tasarlanmıştır. Ancak, dotnet test paketini kullanarak MTP projelerini VSTest modunda çalıştırabilirsiniz. Kullanıcının perspektifinden, bu destek TestingPlatformDotnetTestSupport MSBuild özelliği true olarak ayarlanarak etkinleştirilir (geriye dönük uyumluluk nedenleriyle varsayılan olarak false). Bu özellik true olarak ayarlandığında, Microsoft.Testing.Platform.MSBuild hedef davranışını değiştirerek onu VSTest çağrısına yönlendirir. InvokeTestingPlatform , MTP test uygulamalarını yürütülebilir dosya olarak doğru çalıştırmakla sorumlu olan Microsoft.Testing.Platform.MSBuild'e dahil edilen bir MSBuild hedefidir. VSTest'e özgü komut satırı seçenekleri, --logger gibi, bu modda sessizce yoksayılır. MTP'ye özgü --report-trx gibi bağımsız değişkenleri eklemek için, bunları ek bir --'in arkasına eklemeniz gerekir. Örneğin, dotnet test -- --report-trx. MTP 1.9'da, göz ardı edilen bir argüman algılandığında MTP0001 kodlu bir uyarı üretilir.

Uyarı

MSTest ve NUnit , Microsoft.Testing.Extensions.VSTestBridge paketini kullanır. EnableMSTestRunner veya EnableNUnitRunner ayarını yaparak (ki bu Microsoft.Testing.Platform'u etkinleştirir), test projeniz hem VSTest hem de Microsoft.Testing.Platform'u destekler. Bu senaryoda, dotnet test VSTest modunu kullanırsanız ve TestingPlatformDotnetTestSupport değerini true olarak ayarlamazsanız, EnableMSTestRunner ve EnableNUnitRunner'ün de true olarak ayarlanmadığı durumu gibi tamamen VSTest ile çalışmış olursunuz.

Uyarı

TestingPlatformDotnetTestSupport özelliğinin Directory.Build.props içinde ayarlanması şiddetle tavsiye edilir. Bu, her test projesi dosyasına tek tek eklemenize gerek olmamasını sağlar. Ayrıca, bu özelliği ayarlamayan yeni bir test projesinin kullanılma riskini önler ve bu da bazı projelerin VSTest kullanırken diğerlerinin Microsoft.Testing.Platform kullandığı bir çözüme neden olabilir. Bu karma yapılandırma düzgün çalışmayabilir ve desteklenmeyen bir senaryodur.

Önemli

VSTest modunda MTP projelerinin çalıştırılması, .NET 10 SDK'daki daha yeni deneyime göre eski olarak kabul edilir. .NET 10 SDK ile çalıştırılıyorsa, bu mod altında çalıştırma desteği Microsoft.Testing.Platform sürüm 2'de kaldırılacaktır. Geriye dönük uyumluluk için .NET 9 SDK ve önceki sürümlerde sağlanan destek devam etmektedir. Daha fazla bilgi için bkz dotnet test MTP moduna geçirme.

Aşağıdaki listede, Microsoft.Testing.Platform tarafından desteklenen VSTest modunda dotnet test komutunun komut satırı seçenekleri özetlenmektedir. Bu seçenekler derleme işlemine özgüdür ve VSTest'e geçirilmediğinden MTP ile çalışırlar.

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Tavsiye

MSBuild özelliği aracılığıyla TestingPlatformCommandLineArguments test uygulamanızın komut satırı bağımsız değişkenlerini özelleştirebilirsiniz:

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

MTP projelerini VSTest modunda dotnet testçalıştırmaya özgü daha fazla bilgi için bkz. Microsoft.Testing.Platform'u VSTest moduyla dotnet testkullanma.

Gelişmiş teknik ayrıntılar

dotnet test VSTest modunda, -- RunSettings bağımsız değişkenlerini belirtmek için kullanılır. Başlangıçta, dotnet test bu bağımsız değişkenleri VSTestCLIRunSettings adlı bir MSBuild özelliği olarak geçirmek için tasarlanmıştır. Bu nedenle, VSTest modunda MTP test uygulamalarını çalıştırırken "VSTestCLIRunSettings" değerini "uygulama bağımsız değişkenlerini" temsil edecek şekilde yeniden kullanırız.

VSTest ve Microsoft.Testing.Platform 'u (MTP) Karıştırma

VSTest modunda çalışırken dotnet test , hem VSTest hem de Microsoft.Testing.Platform'un aynı çözüme dahil edilmemesi önerilir.

Bu senaryo resmi olarak desteklenmemektedir ve aşağıdakilere dikkat etmeniz gerekir:

  • VSTest'e özgü komut satırı seçenekleri yalnızca VSTest projelerine uygulanır, MTP test uygulamalarına uygulanmaz.
  • -- sonrasında sağlanan MTP'ye özgü komut satırı seçenekleri, VSTest projeleri için RunSettings bağımsız değişkenleri olarak değerlendirilir.

Önemli çıkarımlar

  • MTP test uygulamalarını VSTest modunda çalıştırmak için, dotnet test'yi kullanmalı, ekstra Microsoft.Testing.Platform.MSBuild'den sonra MTP'ye özgü komut satırı seçeneklerini geçirmeli ve --'yü TestingPlatformDotnetTestSupport olarak ayarlamalısınız.
  • VSTest odaklı komut satırı seçenekleri sessizce yoksayılır.

Bu sorunlardan dolayı .NET, MTP için özel olarak tasarlanmış yeni dotnet test bir mod kullanıma sunulmuştur. MTP kullanıcılarının .NET 10 SDK ile VSTest dotnet test modundan yeni moda geçmelerini öneririz.

Microsoft.Testing.Platform (MTP) modu dotnet test

VSTest modunda MTP ile çalışırken dotnet test karşılaşılan sorunları gidermek için .NET, .NET 10 SDK'da MTP için özel olarak tasarlanmış yeni bir mod kullanıma sunulmuştur.

Bu modu etkinleştirmek için dosyanıza global.json aşağıdaki yapılandırmayı ekleyin:

{
    "test": {
        "runner": "Microsoft.Testing.Platform"
    }
}

Önemli

dotnet test MTP deneyimi yalnızca 1.7 ve sonraki sürümlerde Microsoft.Testing.Platform desteklenir.

Bu mod özellikle Microsoft.Testing.Platform için tasarlandığından, ne TestingPlatformDotnetTestSupport ne de -- gereklidir.

Önemli

Bu mod yalnızca Microsoft.Testing.Platform sürüm 1.7.0 ve üzeri ile uyumludur.

Önemli

Test projeniz VSTest'i destekliyorsa ancak MTP'yi desteklemiyorsa bir hata oluşturulur.

Tavsiye

MSBuild özelliği aracılığıyla TestingPlatformCommandLineArguments test uygulamanızın komut satırı bağımsız değişkenlerini özelleştirebilirsiniz:

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

MTP moduna geçiş yap dotnet test

dotnet test'yi kullanan MTP kullanıcıları için, VSTest modundan daha yeni bir dotnet test deneyime geçmek amacıyla bazı adımlar gereklidir:

  1. Yukarıda gösterildiği gibi dosyanıza test bölüm ekleyinglobal.json.
  2. Artık gerekli olmadığından MSBuild özelliğini kaldırın TestingPlatformDotnetTestSupport .
  3. Artık TestingPlatformCaptureOutput tarafından kullanılmadıkları için TestingPlatformShowTestsFailure ve dotnet test MSBuild özelliklerini kaldırın.
  4. Ek --öğesini kaldırın, örneğin dotnet test -- --report-trx olması dotnet test --report-trxgerekir.
  5. Belirli bir çözümü (veya çözümü içeren dizini) geçiriyorsanız, dotnet test MySolution.slnbunun olması dotnet test --solution MySolution.slngerekir.
  6. Belirli bir projeyi (veya projeyi içeren dizini) geçiriyorsanız, dotnet test MyProject.csprojbu olmalıdır dotnet test --project MyProject.csproj.
  7. Belirli bir DLL'yi, örneğin dotnet test path/to/UnitTests.dll olarak geçirdiğinizde, bu dotnet test --test-modules path/to/UnitTests.dll olmalıdır. --test-modules özelliğinin globbing'i de desteklediğini unutmayın.