Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 testiç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 testVSTest modunda çalıştırmak içinMicrosoft.Testing.Platform.MSBuildkullanmanız, fazladan--sonra MTP'ye özgü komut satırı seçeneklerini geçirmeniz veTestingPlatformDotnetTestSupport'ıtrueolarak 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:
- Yukarıda gösterildiği gibi dosyanıza
testbölüm ekleyinglobal.json. - Artık gerekli olmadığından MSBuild özelliğini kaldırın
TestingPlatformDotnetTestSupport. - Artık
TestingPlatformCaptureOutputtarafından kullanılmadıkları içinTestingPlatformShowTestsFailurevedotnet testMSBuild özelliklerini kaldırın. - Ek
--öğesini kaldırın, örneğindotnet test -- --report-trxolmasıdotnet test --report-trxgerekir. - Belirli bir çözümü (veya çözümü içeren dizini) geçirirken,
dotnet test MySolution.slnbunundotnet test --solution MySolution.slnolması gerekir. - Belirli bir projeyi (veya projeyi içeren dizini) geçiriyorsanız,
dotnet test MyProject.csprojbu olmalıdırdotnet test --project MyProject.csproj. - Belirli bir DLL'yi, örneğin
dotnet test path/to/UnitTests.dllolarak geçirdiğinizde, budotnet test --test-modules path/to/UnitTests.dllolmalıdır.--test-modulesözelliğinin globbing'i de desteklediğini unutmayın.