Aracılığıyla paylaş


'dotnet test' ile test etme

Bu makale, dotnet test CLI komutuyla ilgili içgörüler sunar, VSTest ve Microsoft.Testing.Platform (MTP) ile tarihsel uyumluluğunu kapsar.

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

  • VSTest modu: Bu, dotnet test için varsayılan moddur ve .NET 10 SDK'sı öncesinde kullanılabilen tek moddur. Birincil olarak VSTest için tasarlanmıştır, ancak Microsoft.Testing.Platform.MSBuild NuGet paketi aracılığıyla Microsoft.Testing.Platform testlerini de çalıştırabilir.
  • Microsoft. Testing.Platform modu: .NET 10 SDK ile sunulan bu mod, yalnızca Microsoft ile oluşturulan test uygulamalarını destekler. Testing.Platform.

Tavsiye

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

VSTest modu dotnet test

VSTest, .NET'daki 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, Microsoft.Testing.Platform.MSBuild paketini kullanarak MTP projelerini dotnet test 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, VSTest hedef davranışını değiştirerek InvokeTestingPlatform çağrısına yönlendirir. InvokeTestingPlatform, Microsoft.Testing.Platform.MSBuild içinde yer alan bir MSBuild hedefidir ve MTP test uygulamalarını yürütülebilir dosyalar olarak doğru bir şekilde çalıştırmaktan sorumludur. 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 ayarlayarak (bu, Microsoft.Testing.Platform'ı etkinleştirir), test projeniz hem VSTest'i hem de Microsoft.Testing.Platform'u destekleyecektir. 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 tanıtılması riskini önler ve bu da bazı projelerin VSTest kullanırken diğerlerinin Microsoft kullandığı bir çözüme neden olabilir. Testing.Platform. Bu karma yapılandırma düzgün çalışmayabilir ve desteklenmeyen bir senaryodur.

Önemli

MTP projelerini VSTest modunda çalıştırmak, .NET 10 SDK'daki yeni deneyime göre eski olarak kabul edilir. Bu mod altında çalıştırma desteği, Microsoft.Testing.Platform sürüm 2'de, .NET 10 SDK ile çalıştırıldığında kaldırılacaktır. Destek, .NET 9 SDK ve önceki sürümlerde geriye dönük uyumluluk için kullanılabilir durumda kalır. Daha fazla bilgi için bkz dotnet test MTP moduna geçirme.

Aşağıdaki listede, VSTest modunda dotnet test komutunun Microsoft.Testing.Platform tarafından desteklenen 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>

Test başına hatayı göster

Varsayılan olarak, test hataları bir .log dosyasında özetlenir ve test projesi başına tek bir hata MSBuild'e bildirilir.

Başarısız test başına hataları göstermek için komut satırında -p:TestingPlatformShowTestsFailure=true belirtin veya proje dosyanıza <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> özelliğini ekleyin.

Komut satırında:

dotnet test -p:TestingPlatformShowTestsFailure=true

Tam platform çıkışını göster

Varsayılan olarak, temel alınan test yürütülebilir dosyanın yazdığı tüm konsol çıkışı yakalanır ve kullanıcıdan saklanır. Buna başlık, sürüm bilgileri ve biçimlendirilmiş test bilgileri dahildir.

Bu bilgileri MSBuild çıkışıyla birlikte göstermek için <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>kullanın.

Bu seçenek, test çerçevesinin Console.WriteLine tarafından yazılan kullanıcı çıkışını veya konsola yazmanın diğer benzer yollarını yakalama şeklini etkilemez.

Komut satırında:

dotnet test -p:TestingPlatformCaptureOutput=false

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 (MTP) Karıştırma

VSTest modunda dotnet test çalıştırırken, aynı çözümde hem VSTest'in hem de Microsoft.Testing.Platform'un 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ı dotnet test VSTest modunda çalıştırmak için Microsoft.Testing.Platform.MSBuild kullanmanız, fazladan -- sonra MTP'ye özgü komut satırı seçeneklerini geçirmeniz ve TestingPlatformDotnetTestSupporttrue olarak ayarlamanız gerekir.
  • VSTest odaklı komut satırı seçenekleri sessizce yoksayılır.

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

Microsoft.Testing.Platform (MTP) modu dotnet test

VSTest modunda MTP ile dotnet test çalıştırırken 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

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

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

Önemli

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

Ö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çirirken, dotnet test MySolution.sln bunun dotnet test --solution MySolution.sln olması gerekir.
  6. Belirli bir projeyi (veya projeyi içeren dizini) geçiriyorsanız, dotnet test MyProject.csproj bu 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.