Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
VSTest.Console.exe to narzędzie wiersza polecenia do uruchamiania testów. W wierszu polecenia można określić kilka opcji w dowolnej kolejności. Te opcje są wymienione w Ogólne opcje wiersza polecenia.
Nuta
Adapter MSTest w programie Visual Studio działa również w trybie starszym (odpowiednik uruchamiania testów z mstest.exe) w celu zapewnienia zgodności. W trybie starszym nie można korzystać z funkcji TestCaseFilter. Karta może przełączyć się do trybu starszego, gdy określono testsettings pliku, forcelegacymode jest ustawiona na true w pliku runsettings lub za pomocą atrybutów takich jak HostType.
Aby uruchomić testy automatyczne na maszynie opartej na architekturze usługi ARM, należy użyć VSTest.Console.exe.
Otwórz wiersza polecenia dla deweloperów, aby użyć narzędzia wiersza polecenia, lub możesz znaleźć narzędzie w %Program Files(x86)%\Microsoft Visual Studio\<wersja>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Ogólne opcje wiersza polecenia
W poniższej tabeli wymieniono często używane opcjeVSTest.Console.exei krótkie opisy tych opcji. Podobne podsumowanie można wyświetlić, wpisując VSTest.Console/? w wierszu polecenia. Aby uzyskać pełną dokumentację, w tym przełączniki wewnętrzne i starsze, które nie są wymienione tutaj, zobacz vstest.console.exe opcje wiersza polecenia i w szczególności pominięte przełączniki w repozytorium vstest.
| Opcja | Opis |
|---|---|
| [nazwy plików testowych] | Uruchamianie testów z określonych plików. Rozdziel wiele nazw plików testowych spacjami. Przykłady: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[nazwa pliku] | Uruchamianie testów z dodatkowymi ustawieniami, takimi jak moduły zbierające dane. Aby uzyskać więcej informacji, zobacz Konfigurowanie testów jednostkowych przy użyciu pliku .runsettings Przykład: /Settings:local.runsettings |
| /Tests:[nazwa testu] | Uruchom testy z nazwami, które zawierają podane wartości. To polecenie jest zgodne z pełną nazwą testu, w tym przestrzeni nazw. Aby podać wiele wartości, rozdziel je przecinkami. Przykład: /Tests:TestMethod1,testMethod2/ Tests opcji wiersza polecenia nie można używać z /TestCaseFilter opcji wiersza polecenia. |
| /Parallel | Określa, że testy mają być wykonywane równolegle. Domyślnie można używać maksymalnie wszystkich dostępnych rdzeni na maszynie. Liczbę rdzeni do użycia w pliku ustawień można skonfigurować. |
| /InIsolation | Uruchamia testy w izolowanym procesie. Ta izolacja sprawia, że proces vstest.console.exe jest mniej prawdopodobny, że zostanie zatrzymany po błędzie w testach, ale testy mogą działać wolniej. |
| /TestAdapterPath:[ ścieżka] | Wymusza proces vstest.console.exe używania niestandardowych kart testowych z określonej ścieżki (jeśli istnieje) w przebiegu testu. Przykład: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[typ platformy] | Wymusza zastosowanie danej architektury platformy zamiast platformy określonej z bieżącego środowiska uruchomieniowego. Wartości są bez uwzględniania wielkości liter; akceptowane wartości to x86, , x64S390xARM64Ppc64leARM, RiscV64, i .LoongArch64W Windows tylko x86 i x64 można niezawodnie wymusić, określając ARM wyniki w x64 w większości systemów. Nie należy określać tej opcji do uruchamiania w środowisku uruchomieniowym, które nie znajduje się na liście prawidłowych wartości. |
| /Framework: [wersja struktury] | Docelowa wersja platformy .NET do użycia na potrzeby wykonywania testów. Nowoczesne struktury krótkie formularze są akceptowane i analizowane przez analizator struktury NuGet, na przykład net48, net6.0lub net10.0 (a także długie formy, takie jak .NETFramework,Version=v4.8 i .NETCoreApp,Version=v10.0).Akceptowane są również starsze aliasy Framework35, Framework40, Framework45, FrameworkCore10i FrameworkUap10 .Element TargetFrameworkAttribute służy do automatycznego wykrywania tej opcji z zestawu i domyślnie Framework40 do momentu, gdy atrybut nie jest obecny. Należy jawnie określić tę opcję, jeśli usuniesz TargetFrameworkAttribute z zestawów platformy .NET Core.Jeśli platforma docelowa jest określona jako Framework35, testy są uruchamiane w trybie zgodności środowiska CLR 4.0. Przykład: /Framework:net8.0 |
| /TestCaseFilter:[wyrażenie] | Uruchom testy zgodne z danym wyrażeniem. <wyrażenie> jest właściwością <>=<wartość>[|<Expression>]. Przykład: /TestCaseFilter:"Priority=1"Przykład: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"/TestCaseFilter opcji wiersza polecenia nie można użyć z /Tests opcji wiersza polecenia. Aby uzyskać informacje na temat tworzenia i używania wyrażeń, zobacz filtr TestCase. Podczas wpisywania filtru bezpośrednio w powłoce zobacz Wyrażenia filtru ucieczki w powłoce. |
| /Environment:[NAME]=[VALUE] | Ustawia wartość zmiennej środowiskowej dla procesu hosta testowego. Tworzy zmienną, jeśli nie istnieje, i zastępuje ją, jeśli tak. Ta opcja oznacza /InIsolation i wymusza uruchamianie testów w izolowanym procesie. Określ opcję wiele razy, aby ustawić wiele zmiennych. Krótka forma: /e. Przykład: /e:VARIABLE1=VALUE1 |
| /? | Wyświetla informacje o użyciu. |
| /Logger:[identyfikator URI/friendlyname] | Określ rejestrator dla wyników testów. Określ parametr wiele razy, aby włączyć wiele rejestratorów. Przykład: aby zalogować wyniki do pliku wyników testów programu Visual Studio (TRX), użyj polecenia /Logger:trx [; LogFileName=<Wartości domyślne unikatowej nazwy pliku>] LogFileName Zamiast LogFilePrefix=<prefix> przechowywać oddzielny plik ze znacznikami czasu na przebieg.
LogFileName ustawia jawną nazwę i zastępuje poprzedni plik, natomiast LogFilePrefix nie.Aby uzyskać więcej informacji, zobacz Przykład rejestrowania. |
| /ListTests:[nazwa pliku] | Wyświetla listę odnalezionych testów z danego kontenera testów. Krótka forma: /lt. Uwaga: opcja /TestCaseFilter nie ma wpływu podczas wyświetlania listy testów; steruje tylko testami, które są uruchamiane. |
| /Blame | Uruchamia testy w trybie winy. Ta opcja jest pomocna w izolowaniu problematycznych testów, które powodują awarię hosta testowego. Po wykryciu awarii program tworzy plik sekwencji w TestResults/<Guid>/<Guid>_Sequence.xml, który przechwytuje kolejność testów, które zostały uruchomione przed awarią.Możesz również zebrać zrzut awaryjny lub zawieszanie się, na przykład /Blame:CollectDump;DumpType=full lub /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Równoważne dotnet test przełączniki to --blame-crash i --blame-hang.Aby uzyskać pełną macierz opcji i wymagania dotyczące zbierania zrzutów, zobacz Blame data collector (Obwinianie modułu zbierającego dane). |
| /Diag:[ nazwa pliku] | Zapisuje dzienniki śledzenia diagnostycznego do określonego pliku. Ustaw poziom śledzenia na /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> wartość (wartość domyślna to verbose). |
| /ResultsDirectory:[ścieżka] | Katalog wyników testów zostanie utworzony w określonej ścieżce, jeśli nie istnieje. Przykład: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | Identyfikator procesu nadrzędnego odpowiedzialnego za uruchomienie bieżącego procesu. |
| /Port:[port] | Port połączenia gniazda i odbieranie komunikatów o zdarzeniach. |
| /Collect:[dataCollector friendlyName] | Włącza moduł zbierający dane na potrzeby przebiegu testu. więcej informacji. |
| @[plik] | Odczytuje dodatkowe opcje z określonego pliku odpowiedzi. Argumenty w pliku są oddzielone odstępami (spacjami lub nowymi liniami), a cudzysłów jest obsługiwany, więc opcje mogą obejmować wiele wierszy. Przykład: vstest.console.exe @options.rsp |
Napiwek
Opcje i wartości nie są uwzględniane w wielkości liter.
Przykłady
Składnia uruchamiania vstest.console.exe to:
vstest.console.exe [TestFileNames] [Options]
Domyślnie polecenie zwraca wartość 0, gdy kończy się normalnie, nawet jeśli nie zostaną odnalezione żadne testy. Jeśli nie zostanie odnaleziona żadna wartość niezerowa, użyj opcji <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings.
Następujące polecenie uruchamia vstest.console.exe dla biblioteki testowej myTestProject.dll:
vstest.console.exe myTestProject.dll
Następujące polecenie uruchamia vstest.console.exe z wieloma plikami testowymi. Rozdziel nazwy plików testowych spacjami:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
Następujące polecenie uruchamia vstest.console.exe z kilkoma opcjami. Uruchamia testy w pliku myTestFile.dll w izolowanym procesie i używa ustawień określonych w pliku Local.RunSettings. Ponadto uruchamia tylko testy oznaczone jako "Priority=1" i rejestruje wyniki w pliku .trx.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
Następujące polecenie uruchamia vstest.console.exe z opcją /blame biblioteki testowej myTestProject.dll:
vstest.console.exe myTestFile.dll /blame
Jeśli wystąpi awaria hosta testowego, zostanie wygenerowany plik sequence.xml. Plik zawiera w pełni kwalifikowane nazwy testów w ich sekwencji wykonywania do i w tym konkretny test, który był uruchomiony w momencie awarii.
Jeśli nie wystąpi awaria hosta testowego, plik sequence.xml nie zostanie wygenerowany.
Przykład wygenerowanego pliku sequence.xml:
<?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>
W tym przypadku <Test Name> wymieniony ostatni jest test, który był uruchomiony w momencie awarii.
Kody wyjścia
vstest.console.exe zwraca jeden z dwóch kodów zakończenia:
| Code | Meaning |
|---|---|
0 |
Sukces. Żądana operacja została ukończona i, na potrzeby przebiegu testu, wszystkie wykonane testy zostały zakończone. |
1 |
Awarii. Na przykład co najmniej jeden test zakończył się niepowodzeniem, zgłoszono błąd uruchomienia, wiersz polecenia był nieprawidłowy lub brakuje, nie można załadować źródła testowego lub przebieg został przerwany lub anulowany. |
Proces nigdy nie zwraca żadnej innej wartości. Po uruchomieniu testów za pośrednictwem dotnet testzestawu SDK .NET wyświetla kod zakończenia niezerowy, gdy uruchomienie zakończy się niepowodzeniem w taki sam sposób.
Gdy odnajdywanie nie znajdzie pasujących testów, moduł uruchamiający wyświetla ostrzeżenie , a nie błąd, a domyślnie nadal zwraca wartość 0. Aby zamiast tego wykonać przebieg, który odnajduje lub wybiera zero testów, 1 ustaw <TreatNoTestsAsError>true</TreatNoTestsAsError> element RunConfiguration pliku .runsettings . Aby uzyskać więcej informacji, zobacz Konfigurowanie testów jednostkowych przy użyciu pliku .runsettings.
Wyrażenia filtru ucieczki w powłoce
Wyrażenie /TestCaseFilter jest analizowane zarówno przez powłokę, jak i platformę testową, więc niektóre znaki wymagają ucieczki specyficznej dla powłoki przed vstest.console.exe ich odebrania. Cytowanie całego wyrażenia, jak w przykładach wcześniej w tym artykule, pozwala uniknąć większości problemów. Następujące przypadki wymagają dodatkowej opieki:
PowerShell: przecinek (
,) jest operatorem tablicy, a średnik (;) jest separatorem instrukcji. Zacytuj całe wyrażenie filtru, aby było przekazywane dosłownie, na przykład/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash i zsh (Linux i macOS): Ucieczka
!za pomocą ukośnika odwrotnego, gdy używasz!~operatora (nie zawiera), na przykład--filter FullyQualifiedName\!~IntegrationTestszdotnet test. Również wartości cudzysłowu zawierające znaki o specjalnym znaczeniu dla powłoki, takie jak<,>lub,na liście argumentów typu ogólnego:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Aby uzyskać pełną dokumentację filtrowania i obsługiwane właściwości dla platformy testowej, zobacz Filtr TestCase.
Przykład rejestrowania
Każdy rejestrator definiuje własne parametry. W przeciwieństwie do trx rejestrator konsoli umożliwia ustawienie poziomu szczegółowości. Aby uzyskać dodatkowe informacje, wpisz VSTest.Console/? polecenie w wierszu polecenia.
Oto przykład rejestratora konsoli:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Obsługiwane poziomy szczegółowości obejmują ciche, minimalne, normalne i szczegółowe.
W programie PowerShell należy użyć cudzysłowów:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Aby uzyskać pełną listę dostępnych rejestratorów, a także instrukcje dotyczące tworzenia własnego rejestratora, zobacz Raportowanie wyników testów w repozytorium vstest.
Przykład platformy UWP
W przypadku platformy UWP plik appxrecipe musi być przywołyny zamiast biblioteki DLL.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Zmienne środowiskowe
Platforma testowa rozpoznaje kilka zmiennych środowiskowych. Poniżej przedstawiono te, które są najbardziej przydatne podczas uruchamiania testów z poziomu wiersza polecenia. Aby uzyskać pełną listę, zobacz Zmienne środowiskowe zrozumiałe dla platformy testowej w repozytorium vstest.
| Variable | Opis |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Limit czasu w sekundach na nawiązywanie połączeń między składnikami platformy testowej (vstest.console.exe, testhost i moduł zbierający dane). Wartość domyślna to 90. Zwiększ je na wolnych maszynach lub gdy opóźnienie sieci powoduje przekroczenie limitu czasu połączenia. |
VSTEST_DIAG |
Włącza rejestrowanie diagnostyczne i określa ścieżkę do pliku dziennika. Odpowiednik /Diag opcji. |
VSTEST_DIAG_VERBOSITY |
Ustawia szczegółowość rejestrowania diagnostycznego po VSTEST_DIAG włączeniu. Prawidłowe wartości to Verbose, , WarningInfoi Error (wartość domyślna to Verbose). |
VSTEST_HOST_DEBUG |
Ustaw wartość na dowolną niepustą wartość, aby umożliwić debugowanie procesu testhost. |
VSTEST_RUNNER_DEBUG |
Ustaw wartość na dowolną niepustą wartość, aby włączyć debugowanie modułu uruchamiającego (vstest.console.exe). |
VSTEST_DUMP_PATH |
Zastępuje domyślny katalog, w którym są przechowywane zrzuty awaryjne winy. |
VSTEST_DUMP_FORCEPROCDUMP |
Ustaw wartość na dowolną niepustą wartość, aby wymusić użycie narzędzia ProcDump do zbierania zrzutów awaryjnych. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
Ustaw wartość na wartość , aby 1 wyłączyć ustawienie kodowania UTF-8 w danych wyjściowych konsoli. |
VSTEST_CONSOLE_PATH |
Ścieżka do pliku wykonywalnego vstest.console.exe używanego przez aplikację przekazującą dotnet test zestaw SDK .NET.
-p:VSTestConsolePath Odpowiednik polecenia podczas uruchamiania dotnet test w projekcie. |