Uwaga
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.
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 test
dostę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
.
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.
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ćTestingPlatformDotnetTestSupport
natrue
. - 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 dotnet.config
plik do katalogu głównego repozytorium lub rozwiązania.
[dotnet.test.runner]
name = "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>