Microsoft.Testing.Platform — omówienie
Microsoft.Testing.Platform to uproszczona i przenośna alternatywa dla programu VSTest do uruchamiania testów we wszystkich kontekstach, w tym potoków ciągłej integracji, interfejsu wiersza polecenia, Eksploratora testów programu Visual Studio i Eksploratora tekstu programu VS Code. Platforma Microsoft.Testing.Platform jest osadzona bezpośrednio w projektach testowych i nie ma żadnych innych zależności aplikacji, takich jak vstest.console
lub dotnet test
potrzebne do uruchamiania testów.
Microsoft.Testing.Platform
jest oprogramowaniem open source. Kod można znaleźć Microsoft.Testing.Platform
w repozytorium Microsoft/testfx w witrynie GitHub.
Filary Microsoft.Testing.Platform
Ta nowa platforma testowania jest oparta na środowisku zespołu testowania środowiska deweloperów platformy .NET i ma na celu rozwiązanie problemów napotykanych od czasu wydania platformy .NET Core w 2016 roku. Chociaż istnieje wysoki poziom zgodności między programem .NET Framework i platformą .NET Core/.NET, niektóre kluczowe funkcje, takie jak system wtyczek i nowe możliwe czynniki form kompilacji platformy .NET, sprawiły, że była złożona, aby ewoluować lub w pełni obsługiwać nową funkcję środowiska uruchomieniowego przy użyciu bieżącej architektury platformy VSTest.
Główne czynniki napędzane ewolucją nowej platformy testowej zostały szczegółowo opisane w następujących kwestiach:
Determinizm: Zapewnienie, że uruchamianie tych samych testów w różnych kontekstach (local, CI) spowoduje wygenerowanie tego samego wyniku. Nowe środowisko uruchomieniowe nie polega na odbiciu ani żadnej innej dynamicznej funkcji środowiska uruchomieniowego platformy .NET w celu koordynowania przebiegu testu.
Przezroczystość środowiska uruchomieniowego: środowisko uruchomieniowe testów nie zakłóca kodu platformy testowej, nie tworzy izolowanych kontekstów, takich jak
AppDomain
lubAssemblyLoadContext
, i nie używa odbicia ani niestandardowych programów rozpoznawania zestawów.Rejestracja rozszerzeń w czasie kompilacji: rozszerzenia, takie jak struktury testowe i rozszerzenia poza procesem, są rejestrowane w czasie kompilacji w celu zapewnienia determinizmu i ułatwienia wykrywania niespójności.
Zależności zerowe: rdzeniem platformy jest pojedynczy zestaw .NET,
Microsoft.Testing.Platform.dll
który nie ma zależności innych niż obsługiwane środowiska uruchomieniowe.Hostable: środowisko uruchomieniowe testowe może być hostowane w dowolnej aplikacji platformy .NET. Aplikacja konsolowa jest często używana do uruchamiania testów, ale można utworzyć aplikację testową w dowolnym typie aplikacji .NET. Dzięki temu można uruchamiać testy w specjalnych kontekstach, takich jak urządzenia lub przeglądarki, w których mogą występować ograniczenia.
Obsługa wszystkich czynników formularzy platformy .NET: Obsługa bieżących i przyszłych czynników formularzy platformy .NET, w tym macierzystym AOT.
Wydajne: znalezienie właściwej równowagi między funkcjami i punktami rozszerzenia, aby uniknąć wzdęcia środowiska uruchomieniowego przy użyciu kodu innego niż podstawowy. Nowa platforma testowa została zaprojektowana tak, aby "orkiestrować" przebieg testu, a nie dostarczać szczegółów implementacji na temat tego, jak to zrobić.
Wystarczająco rozszerzalne: nowa platforma jest oparta na punktach rozszerzalności, aby umożliwić maksymalne dostosowanie wykonywania środowiska uruchomieniowego. Umożliwia skonfigurowanie hosta procesu testowania, obserwowanie procesu testowego i używanie informacji z platformy testowej w procesie hosta testowego.
Wdrożenie pojedynczego modułu: funkcja hostability umożliwia wdrożenie modelu pojedynczego modułu, w którym pojedynczy wynik kompilacji może służyć do obsługi wszystkich punktów rozszerzalności, zarówno poza procesem, jak i w procesie, bez konieczności dostarczania różnych modułów wykonywalnych.
Obsługiwane platformy testowe
- MSTest. W narzędziu MSTest obsługa jest wykonywana za pośrednictwem modułu
Microsoft.Testing.Platform
uruchamiającego MSTest. - NUnit. W NUnit obsługa jest wykonywana za pośrednictwem modułu
Microsoft.Testing.Platform
uruchamiającego NUnit. - xUnit.net: W xUnit.net obsługa jest wykonywana za pośrednictwem modułu
Microsoft.Testing.Platform
uruchamiającego xUnit.net. - TUnit: całkowicie skonstruowany na
Microsoft.Testing.Platform
podstawie elementu , aby uzyskać więcej informacji, zobacz dokumentację TUnit
Uruchamianie i debugowanie testów
Microsoft.Testing.Platform
projekty testowe są tworzone jako pliki wykonywalne, które można uruchamiać (lub debugować) bezpośrednio. Nie ma dodatkowego testu z uruchomioną konsolą lub poleceniem. Aplikacja kończy działanie z kodem zakończenia niezerowym, jeśli występuje błąd, jak zwykle w przypadku większości plików wykonywalnych. Aby uzyskać więcej informacji na temat znanych kodów zakończenia, zobacz Microsoft.Testing.Platform exit codes (Kody zakończenia platformy Microsoft.Testing.Platform).
Ważne
Domyślnie Microsoft.Testing.Platform
zbiera dane telemetryczne. Aby uzyskać więcej informacji i opcji rezygnacji, zobacz Microsoft.Testing.Platform telemetria.
- Interfejs wiersza polecenia platformy .NET
- Program Visual Studio
- Visual Studio Code
- Ciągła integracja (CI)
Publikowanie projektu testowego przy użyciu aplikacji dotnet publish
i uruchamianie jej bezpośrednio jest innym sposobem uruchamiania testów. Na przykład wykonanie polecenia ./Contoso.MyTests.exe
. W niektórych scenariuszach można go również użyć dotnet build
do utworzenia pliku wykonywalnego, ale mogą istnieć przypadki brzegowe, takie jak natywna AOT.
Korzystanie z polecenia dotnet run
Polecenie dotnet run
może służyć do kompilowania i uruchamiania projektu testowego. Jest to najprostszy, choć czasami najwolniejszy sposób uruchamiania testów. Użycie dotnet run
jest praktyczne podczas edytowania i uruchamiania testów lokalnie, ponieważ gwarantuje, że projekt testowy zostanie ponownie skompilowany w razie potrzeby. dotnet run
program automatycznie znajdzie również projekt w bieżącym folderze.
dotnet run --project Contoso.MyTests
Aby uzyskać więcej informacji na temat dotnet run
programu , zobacz dotnet run.
Korzystanie z polecenia dotnet exec
Polecenie dotnet exec
or dotnet
służy do wykonywania (lub uruchamiania) już skompilowany projekt testowy. Jest to alternatywa dla bezpośredniego uruchamiania aplikacji. dotnet exec
wymaga ścieżki do skompilowanych bibliotek dll projektu testowego.
dotnet exec Contoso.MyTests.dll
or
dotnet Contoso.MyTests.dll
Uwaga
Podanie ścieżki do pliku wykonywalnego projektu testowego (*.exe) powoduje wystąpienie błędu:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
Aby uzyskać więcej informacji na temat dotnet exec
programu , zobacz dotnet exec.
Korzystanie z polecenia dotnet test
Microsoft.Testing.Platform
oferuje warstwę zgodności i vstest.console.exe
dotnet test
zapewnia możliwość uruchamiania testów tak jak wcześniej podczas włączania nowego scenariusza wykonywania.
dotnet test Contoso.MyTests.dll
Opcje
Poniższa lista zawiera tylko opcje platformy. Aby wyświetlić określone opcje wprowadzone przez każde rozszerzenie, zapoznaj się ze stroną dokumentacji rozszerzenia lub użyj --help
opcji .
--diagnostic
Włącza rejestrowanie diagnostyczne. Domyślnym poziomem dziennika jest Trace
. Plik jest zapisywany w katalogu wyjściowym o następującym formacie nazwy: log_[MMddHHssfff].diag
.
--diagnostic-filelogger-synchronouswrite
Wymusza wbudowany rejestrator plików w celu synchronicznego zapisywania dzienników. Przydatne w scenariuszach, w których nie chcesz utracić żadnych wpisów dziennika (jeśli proces ulegnie awarii). Spowoduje to spowolnienie wykonywania testu.
--diagnostic-output-directory
Katalog wyjściowy rejestrowania diagnostycznego, jeśli nie określono pliku, jest generowany w domyślnym katalogu TestResults .
--diagnostic-output-fileprefix
Prefiks nazwy pliku dziennika. Wartość domyślna to "log_"
.
--diagnostic-verbosity
Definiuje poziom szczegółowości, gdy --diagnostic
jest używany przełącznik. Dostępne wartości to Trace
, , Debug
, Information
Warning
, , Error
lub Critical
.
--help
Wyświetla opis sposobu używania polecenia .
-ignore-exit-code
Zezwala na ignorowanie niektórych kodów zakończenia innych niż zero, a zamiast tego zwracane jako 0
. Aby uzyskać więcej informacji, zobacz Ignoruj określone kody zakończenia.
--info
Wyświetla zaawansowane informacje o aplikacji testowej .NET, takie jak:
- Platforma.
- Środowisko.
- Każdy zarejestrowany dostawca wiersza polecenia, taki jak jego,
name
,version
description
ioptions
. - Każde zarejestrowane narzędzie, takie jak jego,
command
,name
,version
,description
i wszystkich dostawców wiersza polecenia.
Ta funkcja służy do zrozumienia rozszerzeń, które będą rejestrować tę samą opcję wiersza polecenia lub zmiany dostępnych opcji między wieloma wersjami rozszerzenia (lub platformy).
--list-tests
Wyświetl listę dostępnych testów. Testy nie zostaną wykonane.
--minimum-expected-tests
Określa minimalną liczbę testów, które mają zostać uruchomione. Domyślnie oczekuje się, że co najmniej jeden test zostanie uruchomiony.
--results-directory
Katalog, w którym zostaną umieszczone wyniki testu. Jeśli określony katalog nie istnieje, zostanie utworzony. Wartość domyślna znajduje TestResults
się w katalogu zawierającym aplikację testową.
Integracja z programem MSBuild
- Obsługa programu
dotnet test
. Aby uzyskać więcej informacji, zobacz dotnet test integration (Integracja z testem dotnet). - Obsługa wymagana
ProjectCapability
przezVisual Studio
eksploratory testów iVisual Studio Code
. - Automatyczne generowanie punktu wejścia (
Main
metoda). - Automatyczne generowanie pliku konfiguracji.
Uwaga
Ta integracja działa w sposób przejściowy (projekt odwołujący się do innego projektu odwołującego się do tego pakietu będzie zachowywał się tak, jakby odwołuje się do pakietu) i można go wyłączyć za pomocą IsTestingPlatformApplication
właściwości MSBuild.