Udostępnij za pośrednictwem


Testowanie za pomocą polecenia "dotnet test"

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 na true.
  • 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>