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, 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:
-
VSTest modu: Bu, için varsayılan moddur
dotnet testve .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 testi de çalıştırabilir. - Microsoft.Testing.Platform modu: .NET 10 SDK ile sunulan bu mod yalnızca Microsoft.Testing.Platform ile oluşturulan test uygulamalarını destekler.
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ı, ekstraMicrosoft.Testing.Platform.MSBuild'den sonra MTP'ye özgü komut satırı seçeneklerini geçirmeli ve--'yüTestingPlatformDotnetTestSupportolarak 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:
- 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çiriyorsanız,
dotnet test MySolution.slnbunun olmasıdotnet test --solution MySolution.slngerekir. - 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.