Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł dostarcza informacji na temat polecenia CLI dotnet test, w tym zgodności z VSTest i Microsoft.Testing.Platform (MTP) oraz jego historii.
Polecenie dotnet test działa w dwóch trybach podstawowych:
- Tryb VSTest: jest to tryb domyślny i był jedynym trybem
dotnet testdostępnym przed zestawem SDK platformy .NET 10. Jest ona przeznaczona głównie dla programu VSTest, ale może również uruchamiać test Microsoft.Testing.Platform za pośrednictwem pakietu NuGet Microsoft.Testing.Platform.MSBuild . - Tryb Microsoft.Testing.Platform : wprowadzony z zestawem .NET 10 SDK, ten tryb obsługuje wyłącznie aplikacje testowe utworzone przy użyciu platformy Microsoft.Testing.Platform.
Wskazówka
Aby uzyskać informacje o CLI, zobacz dotnet test.
Tryb VSTest dla dotnet test
Przez długi czas vsTest był jedyną platformą testową na platformie .NET. W związku z tym dotnet test został zaprojektowany wyłącznie na potrzeby programu VSTest, z wszystkimi opcjami wiersza polecenia dostosowanymi do narzędzia VSTest.
Proces polega na wywołaniu VSTest obiektu docelowego MSBuild, który wyzwala inne wewnętrzne obiekty docelowe do uruchomienia i ostatecznie uruchamia vstest.console. Wszystkie dotnet test opcje wiersza polecenia są przekładane na ich odpowiedniki w vstest.console.
Uruchamianie projektów MTP w trybie VSTest
dotnet test został zaprojektowany do uruchamiania projektów VSTest w trybie VSTest. Można jednak uruchamiać projekty MTP w dotnet test trybie VSTest przy użyciu pakietu Microsoft.Testing.Platform.MSBuild . Z perspektywy użytkownika ta obsługa jest włączona przez ustawienie TestingPlatformDotnetTestSupport właściwości MSBuild na true (domyślnie jest false to z powodów zgodności z poprzednimi wersjami). Gdy ta właściwość jest ustawiona na true, Microsoft.Testing.Platform.MSBuild zmienia docelowe zachowanie VSTest, przekierowując je do wywołania InvokeTestingPlatform.
InvokeTestingPlatform jest obiektem docelowym MSBuild zawartym w programie Microsoft.Testing.Platform.MSBuild, który jest odpowiedzialny za prawidłowe uruchamianie aplikacji testowych MTP jako plików wykonywalnych. Opcje wiersza polecenia specyficzne dla programu VSTest, takie jak --logger, są dyskretnie ignorowane w tym trybie. Aby uwzględnić argumenty specyficzne dla protokołu MTP, takie jak --report-trx, należy je dołączyć po dodatkowym --. Na przykład dotnet test -- --report-trx. W 1.9 protokołu MTP jest generowane ostrzeżenie z kodem MTP0001, gdy zostanie wykryty argument ignorowany w trybie dyskretnym.
Uwaga
Narzędzia MSTest i NUnit używają pakietu Microsoft.Testing.Extensions.VSTestBridge . Ustawienie EnableMSTestRunner lub EnableNUnitRunner (które włącza Microsoft.Testing.Platform) sprawi, że Twój projekt testowy będzie wspierał zarówno VSTest, jak i Microsoft.Testing.Platform.
W tym scenariuszu, jeśli używasz trybu dotnet test VSTest i nie ustawisz TestingPlatformDotnetTestSupport na wartość true, zasadniczo działasz całkowicie w VSTest, tak jakby EnableMSTestRunner i EnableNUnitRunner również nie były ustawione na true.
Uwaga
Zdecydowanie zaleca się ustawienie TestingPlatformDotnetTestSupport właściwości w Directory.Build.props. Dzięki temu nie trzeba dodawać go do każdego pliku projektu testowego indywidualnie. Ponadto zapobiega to ryzyku wprowadzenia nowego projektu testowego, który nie ustawia tej właściwości, co może spowodować rozwiązanie, w którym niektóre projekty korzystają z narzędzia VSTest, podczas gdy inne używają platformy Microsoft.Testing.Platform. Ta mieszana konfiguracja może nie działać poprawnie i jest nieobsługiwanym scenariuszem.
Ważne
Uruchamianie projektów MTP w trybie VSTest jest uznawane za przestarzałe na rzecz nowego rozwiązania w .NET 10 SDK. Obsługa uruchamiania w tym trybie zostanie usunięta w wersji Microsoft.Testing.Platform w wersji 2, jeśli zostanie uruchomiona z zestawem .NET 10 SDK. Obsługa pozostaje dostępna dla zestawu SDK .NET 9 i starszych w celu zapewnienia zgodności z poprzednimi wersjami.
Aby uzyskać więcej informacji, zobacz Migrowanie do trybu MTP programu dotnet test.
Poniższa lista przedstawia opcje dotnet test wiersza polecenia w trybie VSTest, które są obsługiwane przez microsoft.Testing.Platform. Te opcje są specyficzne dla procesu kompilacji i nie są przekazywane do programu VSTest, dlatego współpracują z MTP.
-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>
Wskazówka
Argumenty wiersza polecenia aplikacji testowej można dostosować za pomocą TestingPlatformCommandLineArguments właściwości MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Aby uzyskać więcej informacji dotyczących uruchamiania projektów MTP w trybie VSTest programu dotnet test, zobacz Używanie Microsoft.Testing.Platform z trybem VSTest programu dotnet test.
Zaawansowane szczegóły techniczne
W trybie dotnet test VSTest element -- jest używany do wskazywania argumentów RunSettings. Początkowo dotnet test został zaprojektowany do przekazywania tych argumentów jako właściwość MSBuild o nazwie VSTestCLIRunSettings. W związku z tym podczas uruchamiania aplikacji testowych MTP w trybie VSTest zmieniamy wartość VSTestCLIRunSettings , aby reprezentować "argumenty aplikacji".
Mieszanie programów VSTest i Microsoft.Testing.Platform (MTP)
W przypadku uruchamiania dotnet test w trybie VSTest zaleca się unikanie dołączania programów VSTest i Microsoft.Testing.Platform w tym samym rozwiązaniu.
Ten scenariusz nie jest oficjalnie obsługiwany i należy pamiętać o następujących kwestiach:
- Opcje wiersza polecenia specyficzne dla programu VSTest będą stosowane tylko do projektów VSTest, a nie do aplikacji testowych MTP.
- Opcje wiersza polecenia specyficzne dla protokołu MTP podane po
--będą traktowane jako argumenty RunSettings dla projektów VSTest.
Kluczowe wnioski
- Aby uruchomić aplikacje testowe MTP w trybie VSTest
dotnet test, należy użyćMicrosoft.Testing.Platform.MSBuild, przekazać opcje wiersza polecenia specyficzne dla MTP po dodatkowym--, i ustawićTestingPlatformDotnetTestSupportnatrue. - Opcje wiersza polecenia dotyczące programu VSTest są pomijane bez powiadomienia.
Ze względu na te problemy platforma .NET wprowadziła nowy dotnet test tryb przeznaczony specjalnie dla protokołu MTP. Zachęcamy użytkowników MTP do przejścia z trybu VSTest dotnet test do nowego trybu przy użyciu zestawu SDK platformy .NET 10.
Tryb dotnet test Microsoft.Testing.Platform (MTP)
Aby rozwiązać problemy występujące podczas uruchamiania dotnet test z MTP w trybie VSTest, .NET wprowadził nowy tryb w zestawie SDK .NET 10 zaprojektowany specjalnie dla MTP.
Aby włączyć ten tryb, dodaj następującą konfigurację do pliku global.json :
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Ważne
Środowisko dotnet test MTP jest obsługiwane tylko w Microsoft.Testing.Platform wersji 1.7 lub nowszej.
Ponieważ ten tryb jest specjalnie zaprojektowany dla Microsoft.Testing.Platform, ani TestingPlatformDotnetTestSupport, ani dodatkowy -- nie są wymagane.
Ważne
Ten tryb jest zgodny tylko z wersją Microsoft.Testing.Platform w wersji 1.7.0 lub nowszej.
Ważne
Jeśli projekt testowy obsługuje narzędzie VSTest, ale nie obsługuje protokołu MTP, zostanie wygenerowany błąd.
Wskazówka
Argumenty wiersza polecenia aplikacji testowej można dostosować za pomocą TestingPlatformCommandLineArguments właściwości MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Przejdź do trybu MTP dotnet test
W przypadku użytkowników protokołu MTP korzystających z trybu VSTest programu dotnet test należy wykonać kilka czynności, aby przejść do nowszego środowiska dotnet test.
- Dodaj
testsekcję doglobal.jsonpliku, jak pokazano powyżej. - Usuń
TestingPlatformDotnetTestSupportwłaściwość MSBuild, ponieważ nie jest już wymagana. - Usuń
TestingPlatformCaptureOutputiTestingPlatformShowTestsFailurewłaściwości MSBuild, ponieważ nie są już używane przez nowy elementdotnet test. - Usuń dodatkowy element
--, na przykładdotnet test -- --report-trxpowinien stać się .dotnet test --report-trx - Jeśli przekazuje określone rozwiązanie (lub katalog zawierający rozwiązanie), na przykład
dotnet test MySolution.sln, powinno to stać się .dotnet test --solution MySolution.sln - Jeśli przekazanie określonego projektu (lub katalogu zawierającego projekt), na przykład
dotnet test MyProject.csproj, powinno to stać się .dotnet test --project MyProject.csproj - Jeśli przekazuje konkretną bibliotekę DLL, na przykład
dotnet test path/to/UnitTests.dll, powinno to stać siędotnet test --test-modules path/to/UnitTests.dll. Należy pamiętać, że--test-modulesobsługuje również globbing.