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.
VSTest.Console.exe, testleri çalıştırmak için komut satırı aracıdır. Komut satırında istediğiniz sırada çeşitli seçenekler belirtebilirsiniz. Bu seçenekler, Genel komut satırı seçeneklerinde listelenir.
Not
Visual Studio'daki MSTest bağdaştırıcısı da uyumluluk için eski modda (mstest.exeile test çalıştırmaya eşdeğer) çalışır. Eski modda TestCaseFilter özelliğinden yararlanamaz. Bağdaştırıcı, bir testsettings dosyası belirtildiğinde, forcelegacymoderunsettings dosyasında true olarak ayarlandığında veya HostTypegibi öznitelikleri kullanarak eski moda geçebilir.
ARM mimarisi tabanlı bir makinede otomatikleştirilmiş testler çalıştırmak için VSTest.Console.exekullanmanız gerekir.
Komut satırı aracını kullanmak için Geliştirici Komut İstemi açın veya aracı \<sürümü>\common7\ide\CommonExtensions\<Platform%\Microsoft Visual Studio\>sürüm<%Program Dosyalar(x86) içinde bulabilirsiniz | Microsoft>.
Genel komut satırı seçenekleri
Aşağıdaki tabloda ,VSTest.Console.exe için yaygın olarak kullanılan seçenekler ve bunların kısa açıklamaları listelenmiştir. Komut satırına VSTest.Console/? yazarak benzer bir özet görebilirsiniz. Burada listelenmeyen iç ve eski anahtarlar da dahil olmak üzere tam başvuru için bkz. vstest deposundakivstest.console.exe komut satırı seçenekleri ve özellikle Atlanan anahtarlar .
| Seçenek | Açıklama |
|---|---|
| [test dosyası adları] | Belirtilen dosyalardan testleri çalıştırın. Birden çok test dosyası adını boşluklarla ayırın. Örnekler: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[dosya adı] | Veri toplayıcılar gibi ek ayarlarla testleri çalıştırın. Daha fazla bilgi için bkz. .runsettings dosyası kullanarak birim testlerini yapılandırma Örnek: /Settings:local.runsettings |
| /Tests:[test adı] | Sağlanan değerleri içeren adlarla testleri çalıştırın. Bu komut, ad alanı da dahil olmak üzere tam test adıyla eşleşir. Birden çok değer sağlamak için bunları virgülle ayırın. Örnek: /Tests:TestMethod1,testMethod2/Tests komut satırı seçeneği /TestCaseFilter komut satırı seçeneğiyle kullanılamaz. |
| /Parallel | Testlerin paralel olarak yürütüldüğünü belirtir. Varsayılan olarak, makinedeki tüm kullanılabilir çekirdekler kullanılabilir. Bir ayarlar dosyasında kullanılacak çekirdek sayısını yapılandırabilirsiniz. |
| /InIsolation | Testleri yalıtılmış bir işlemde çalıştırır. Bu yalıtım, testlerdeki bir hatada vstest.console.exe işleminin durdurulma olasılığını düşürür, ancak testler daha yavaş çalışabilir. |
| /TestAdapterPath:[yol] |
vstest.console.exe işlemini, test çalıştırmasında belirtilen bir yoldan (varsa) özel test bağdaştırıcıları kullanmaya zorlar. Örnek: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[platform türü] | Verilen platform mimarisini geçerli çalışma zamanından belirlenen platform yerine kullanılmaya zorlar. Değerler büyük/küçük harfe duyarlı değildir; kabul edilen değerler , , x64, ARM, ARM64, S390x, Ppc64le, RiscV64ve LoongArch64değerleridirx86.Windows,yalnızca x86 ve x64 güvenilir bir şekilde zorlanabilir; çoğu sistemde sonuçların x64 olarak belirtilmesi ARM. Geçerli değerler listesinde olmayan bir çalışma zamanında çalışmak için bu seçeneği belirtmeyin. |
| /Framework: [framework sürüm] | Test yürütmesi için kullanılacak hedef .NET sürümü. Modern çerçeve kısa formları, NuGet çerçeve ayrıştırıcısı tarafından kabul edilir ve ayrıştırılır, örneğin net48, net6.0veya net10.0 (ve gibi uzun formlar gibi .NETFramework,Version=v4.8.NETCoreApp,Version=v10.0)., , Framework40Framework45, FrameworkCore10ve FrameworkUap10 eski diğer adları Framework35da kabul edilir.TargetFrameworkAttribute, bu seçeneği derlemenizden otomatik olarak algılamak Framework40 için kullanılır ve varsayılan olarak öznitelik mevcut olmadığında kullanılır. .NET Core derlemelerinizden TargetFrameworkAttribute kaldırırsanız bu seçeneği açıkça belirtmeniz gerekir.Hedef çerçeve Framework35olarak belirtilirse, testler CLR 4.0 "uyumluluk modunda" çalışır. Örnek: /Framework:net8.0 |
| /TestCaseFilter:[ifadesi] | Verilen ifadeyle eşleşen testleri çalıştırın. <İfade>, [|<İfade>]<>=<değer >biçimindedir. Örnek: /TestCaseFilter:"Priority=1"Örnek: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"/TestCaseFilter komut satırı seçeneği /Tests komut satırı seçeneğiyle kullanılamaz. İfade oluşturma ve kullanma hakkında bilgi için bkz. TestCase filtresi. Doğrudan bir kabuğa filtre yazdığınızda bkz . Kabuktaki Escape filtre ifadeleri. |
| /Environment:[NAME]=[VALUE] | Test konağı işlemi için bir ortam değişkeninin değerini ayarlar. Yoksa değişkeni oluşturur ve varsa geçersiz kılar. Bu seçenek /InIsolation anlamına gelir ve testleri yalıtılmış bir işlemde çalışmaya zorlar. Birden çok değişken ayarlama seçeneğini birden çok kez belirtin. Kısa form: /e. Örnek: /e:VARIABLE1=VALUE1 |
| /? | Kullanım bilgilerini görüntüler. |
| /Logger:[uri/friendlyname] | Test sonuçları için günlükçü belirtin. Birden çok günlükçü etkinleştirmek için parametresini birden çok kez belirtin. Örnek: Visual Studio Test Sonuçları Dosyasında (TRX) sonuçları günlüğe kaydetmek için /Logger:trx [; LogFileName=<Varsayılan olarak benzersiz dosya adı>] Çalıştırma başına ayrı, zaman damgalı bir dosya tutmak için yerine LogFileName kullanınLogFilePrefix=<prefix>.
LogFileName açık bir ad ayarlar ve önceki dosyanın üzerine yazar, ancak LogFilePrefix yazmaz.Daha fazla bilgi için bkz . Günlüğe kaydetme örneği. |
| /ListTests:[dosya adı] | Belirtilen test kapsayıcısından bulunan testleri listeler. Kısa form: /lt. Not: testleri listelerken /TestCaseFilter seçeneğinin hiçbir etkisi yoktur; yalnızca çalıştırılacak testleri denetler. |
| /Blame | Testleri suçlama modunda çalıştırır. Bu seçenek, test konağı kilitlenmesine neden olan sorunlu testleri yalıtmada yararlıdır. Kilitlenme algılandığında, kilitlenmeden önce çalıştırılan testlerin sırasını yakalayan TestResults/<Guid>/<Guid>_Sequence.xml bir sıra dosyası oluşturur.Kilitlenme veya kilitlenme dökümü de toplayabilirsiniz, örneğin /Blame:CollectDump;DumpType=full veya /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini.
dotnet test Eşdeğer anahtarlar ve --blame-hangşeklindedir--blame-crash.Tam seçenek matrisi ve döküm toplama gereksinimleri için bkz . Blame data collector. |
| /Diag:[dosya adı] | Tanılama izleme günlüklerini belirtilen dosyaya yazar. İzleme düzeyini ile /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> ayarlayın (varsayılan olarak ).verbose |
| /ResultsDirectory:[yol] | Test sonuçları dizini, yoksa belirtilen yolda oluşturulur. Örnek: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | Geçerli işlemin başlatılmasından sorumlu Üst İşlemin İşlem Kimliği. |
| /Port:[bağlantı noktası] | Yuva bağlantısı için bağlantı noktası ve olay iletilerini alma. |
| /Collect:[dataCollector friendlyName] | Test çalıştırması için veri toplayıcıyı etkinleştirir. daha fazla bilgi. |
| @[dosya] | Belirtilen yanıt dosyasından ek seçenekleri okur. Dosyadaki bağımsız değişkenler boşlukla (boşluklar veya yeni satırlar) ayrılır ve alıntılar desteklenir, böylece seçenekler birden çok satıra yayılabilir. Örnek: vstest.console.exe @options.rsp |
Bahşiş
Seçenekler ve değerler büyük/küçük harfe duyarlı değildir.
Örnekler
vstest.console.exe çalıştırma söz dizimi şöyledir:
vstest.console.exe [TestFileNames] [Options]
Varsayılan olarak, hiçbir test bulunamasa bile komut normal şekilde çıktığında 0 döndürür. Hiçbir test bulunmazsa sıfır olmayan bir değer döndürmek istiyorsanız, <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings seçeneğini kullanın.
Aşağıdaki komut, myTestProject.dlltest kitaplığı için vstest.console.exe çalıştırır:
vstest.console.exe myTestProject.dll
Aşağıdaki komut birden çok test dosyasıyla vstest.console.exe çalıştırır. Test dosyası adlarını boşluklarla ayırın:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
Aşağıdaki komut çeşitli seçeneklerle vstest.console.exe çalıştırır. myTestFile.dll dosyasındaki testleri yalıtılmış bir işlemde çalıştırır ve Local.RunSettings dosyasında belirtilen ayarları kullanır. Ayrıca, yalnızca "Priority=1" olarak işaretlenmiş testleri çalıştırır ve sonuçları bir .trx dosyasına kaydeder.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
Aşağıdaki komut, myTestProject.dlltest kitaplığı için /blame seçeneğiyle vstest.console.exe çalıştırır:
vstest.console.exe myTestFile.dll /blame
Test konağı kilitlenmesi oluşursa, sequence.xml dosyası oluşturulur. Dosya, kilitlenme sırasında çalıştırılan belirli testi de dahil olmak üzere yürütme sıralarındaki testlerin tam adlarını içerir.
Test konağı kilitlenmesi yoksa sequence.xml dosyası oluşturulmaz.
Oluşturulan sequence.xml dosyası örneği:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
Bu durumda, <Test Name> listelenen son test kilitlenme sırasında çalışan testtir.
Çıkış kodları
vstest.console.exe iki çıkış kodundan birini döndürür:
| Kod | Meaning |
|---|---|
0 |
Başarı. İstenen işlem tamamlandı ve bir test çalıştırması için yürütülen tüm testler geçti. |
1 |
Başarısızlık. Örneğin, bir veya daha fazla test başarısız oldu, bir çalıştırma hatası bildirildi, komut satırı geçersiz veya eksik, bir test kaynağı yüklenemedi veya çalıştırma durduruldu veya iptal edildi. |
İşlem hiçbir zaman başka bir değer döndürmez. üzerinden dotnet testtestleri çalıştırdığınızda, çalıştırma aynı şekilde başarısız olduğunda .NET SDK'sı sıfır olmayan bir çıkış kodu gösterir.
Bulma eşleşen test bulmadığında, çalıştırıcı hata yerine bir uyarı yazdırır ve varsayılan olarak yine döndürür 0. Bunun yerine sıfır testi bulan veya seçen bir çalıştırmanın döndürülmesi 1 için ,runsettings dosyanızın RunConfiguration öğesinde ayarlayın<TreatNoTestsAsError>true</TreatNoTestsAsError>. Daha fazla bilgi için bkz. .runsettings dosyası kullanarak birim testlerini yapılandırma.
Kabuktaki kaçış filtresi ifadeleri
/TestCaseFilter ifadesi hem kabuğunuz hem de test platformunuz tarafından ayrıştırılır, bu nedenle bazı karakterlerin vstest.console.exebunları almadan önce kabuğa özgü kaçışlara ihtiyacı vardır. Bu makalenin önceki bölümlerindeki örneklerde olduğu gibi ifadenin tamamının alıntılanması, sorunların çoğunu önler. Aşağıdaki durumlarda ek bakım gerekir:
PowerShell: Virgül (
,), dizi işlecidir ve noktalı virgül (;) bir deyim ayırıcıdır. Filtre ifadesinin tamamını alıntılayarak tam anlamıyla geçirilmesini sağlayın, örneğin/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash ve zsh (Linux ve macOS): örneğin
--filter FullyQualifiedName\!~IntegrationTestsile (içermez) işlecini!~kullandığınızda ters eğik çizgiyledotnet testkaçış!Ayrıca, kabuk<>için özel anlamı olan , veya,genel tür bağımsız değişken listesinde bulunan karakterler içeren değerleri tırnak içine alın:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Test çerçevesi başına tam filtreleme başvurusu ve desteklenen özellikler için bkz. TestCase filtresi.
Günlüğe kaydetme örneği
Her günlükçü kendi parametrelerini tanımlar. Trx'in aksine, konsol günlükçü ayrıntı düzeyini ayarlamanıza olanak tanır. Ek bilgi için komut satırına yazın VSTest.Console/? .
Konsol günlükçüsüsü için bir örnek aşağıda verilmiştir:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Desteklenen ayrıntı düzeyleri sessiz, en düşük, normal ve ayrıntılıdır.
PowerShell'de tırnak işaretleri kullanmanız gerekir:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Kullanılabilir günlükçülerin tam listesi ve kendi günlükçünüzü yazma yönergeleri için bkz. Vstest deposunda test sonuçlarını raporlama .
UWP örneği
UWP için appxrecipe dosyasına DLL yerine başvurulmalıdır.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Ortam değişkenleri
Test platformu çeşitli ortam değişkenlerini tanır. Komut satırından testleri çalıştırdığınızda en yararlı olanlar aşağıdadır. Listenin tamamı için bkz. Vstest deposundaki test platformu tarafından anlaşılan ortam değişkenleri .
| Variable | Açıklama |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Test platformu bileşenleri (vstest.console.exe, testhost ve veri toplayıcı) arasında bağlantı kurmak için saniye cinsinden zaman aşımı. Varsayılan değer 90'dır. Yavaş makinelerde veya ağ gecikme süresi bağlantı zaman aşımlarına neden olduğunda bunu artırın. |
VSTEST_DIAG |
Tanılama günlüğünü etkinleştirir ve günlük dosyasının yolunu belirtir. /Diag seçeneğine eşdeğerdir. |
VSTEST_DIAG_VERBOSITY |
Etkinleştirildiğinde VSTEST_DIAG tanılama günlüğünün ayrıntı düzeyini ayarlar. Geçerli değerler , Verbose, InfoWarningve Error (varsayılan değerdirVerbose). |
VSTEST_HOST_DEBUG |
Testhost işleminin hata ayıklamasını etkinleştirmek için boş olmayan herhangi bir değere ayarlayın. |
VSTEST_RUNNER_DEBUG |
Çalıştırıcının hata ayıklamasını etkinleştirmek için boş olmayan herhangi bir değere ayarlayın (vstest.console.exe). |
VSTEST_DUMP_PATH |
Suçlama kilitlenme dökümlerinin depolandığı varsayılan dizini geçersiz kılar. |
VSTEST_DUMP_FORCEPROCDUMP |
ProcDump'u kilitlenme dökümü koleksiyonu için kullanılmaya zorlamak için boş olmayan herhangi bir değere ayarlayın. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
1 Konsol çıkışında UTF-8 kodlama ayarını devre dışı bırakmak için olarak ayarlayın. |
VSTEST_CONSOLE_PATH |
.NET SDK'sının iletme uygulaması tarafından kullanılanvstest.console.exeyürütülebilir dosyasının dotnet test yolu. Bir projede çalıştırdığınız dotnet test zaman ile -p:VSTestConsolePath eşdeğerdir. |