Konfigurowanie narzędzia MSTest
MSTest, Microsoft Testing Framework, to platforma testowa dla aplikacji .NET. Umożliwia ona pisanie i wykonywanie testów oraz zapewnianie zestawów testów z integracją z eksploratorami testów programu Visual Studio i Visual Studio Code, interfejsem wiersza polecenia platformy .NET i wieloma potokami ciągłej integracji.
MSTest to w pełni obsługiwana platforma testowa typu open source i międzyplatformowa, która współpracuje ze wszystkimi obsługiwanymi obiektami docelowymi platformy .NET (.NET Framework, .NET Core, .NET, UWP, WinUI itd.) hostowaną w usłudze GitHub.
Ustawienia uruchamiania
Plik .runsettings może służyć do konfigurowania sposobu uruchamiania testów jednostkowych. Aby dowiedzieć się więcej na temat ustawień runsettings i konfiguracji związanych z platformą, możesz zapoznać się z dokumentacją uruchamiania vsTest lub dokumentacją uruchamiania modułu uruchamiającego MSTest.
MSTest, element
Następujące wpisy runsettings umożliwiają skonfigurowanie sposobu działania narzędzia MSTest.
Konfigurowanie | Wartość domyślna | Wartości |
---|---|---|
AssemblyCleanupTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania zestawu.
[Timeout] atrybut określony w metodzie oczyszczania zestawu zastępuje globalny limit czasu . |
AssemblyInitializeTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu zestawu zainicjuj metodę.
[Timeout] atrybut określony w zestawie inicjuje metodę zastępowania globalnego limitu czasu . |
AssemblyResolution | fałsz | Ścieżki do dodatkowych zestawów można określić podczas znajdowania i uruchamiania testów jednostkowych. Na przykład użyj tych ścieżek dla zestawów zależności, które nie należą do tego samego katalogu co zestaw testowy. Aby określić ścieżkę, użyj elementu Ścieżka katalogu. Ścieżki mogą zawierać zmienne środowiskowe.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution> Ta funkcja jest stosowana tylko w przypadku korzystania z obiektu docelowego programu .NET Framework. |
CaptureTraceOutput | prawda | Przechwyć wiadomości tekstowe pochodzące z Console.Write* interfejsów API , Trace.Write* i Debug.Write* , które będą skojarzone z bieżącym uruchomionym testem. |
ClassCleanupLifecycle | EndOfClass | Jeśli chcesz, aby oczyszczanie klasy było wykonywane na końcu zestawu, ustaw go na EndOfAssembly. (Nieobsługiwane już od msTest w wersji 4 jako EndOfClass jest ustawieniem domyślnym i tylko Zachowanie klasyCleanup ) |
ClassCleanupTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania klasy.
[Timeout] atrybut określony w metodzie oczyszczania klasy zastępuje globalny limit czasu. |
ClassInitializeTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany dla każdego wystąpienia klasy inicjowania metody.
[Timeout] atrybut określony w klasie inicjowania metody zastępuje globalny limit czasu. |
ConsiderFixturesAsSpecialTests | fałsz | Aby wyświetlić AssemblyInitialize wartości , , AssemblyCleanup ClassInitialize ClassCleanup jako pojedyncze wpisy w programach Visual Studio i Visual Studio Code Test Explorer i .trx, ustaw tę wartość na true |
DeleteDeploymentDirectoryAfterTestRunIsComplete | prawda | Aby zachować katalog wdrożenia po uruchomieniu testu, ustaw tę wartość na false. |
WdrożenieEnabled | prawda | Jeśli ustawisz wartość false, elementy wdrożenia określone w metodzie testowej nie zostaną skopiowane do katalogu wdrożenia. |
DeployTestSourceDependencies | prawda | Wartość wskazująca, czy odwołania do źródła testów mają zostać wdrożone. |
EnableBaseClassTestMethodsFromOtherAssemblies | prawda | Wartość wskazująca, czy włączyć odnajdywanie metod testowych z klas bazowych w innym zestawie niż dziedzicząca klasa testowa. |
ForcedLegacyMode | fałsz | W starszych wersjach programu Visual Studio adapter MSTest został zoptymalizowany pod kątem szybszego i bardziej skalowalnego. Niektóre zachowania, na przykład kolejność, w jakiej są uruchamiane testy, mogą nie być dokładnie takie same, jak w poprzednich wersjach programu Visual Studio. Ustaw wartość true , aby używać starszej karty testowej. Możesz na przykład użyć tego ustawienia, jeśli masz plik app.config określony dla testu jednostkowego. Zaleca się, aby rozważyć refaktoryzację testów pozwalającą na użycie nowszego adaptera. |
MapInconclusiveToFailed | fałsz | Jeśli test zakończy się z niejednoznacznym stanem, zostanie on zamapowany na stan pominięty w Eksploratorze testów. Jeśli chcesz, aby niejednoznaczne testy zostały pokazane jako nieudane, ustaw wartość true. |
MapNotRunnableToFailed | prawda | Wartość wskazująca, czy wynik niemożliwy do uruchomienia jest mapowany na test, który zakończył się niepowodzeniem. |
OrderTestsByNameInClass | fałsz | Jeśli chcesz uruchamiać testy według nazw testów zarówno w Eksploratorach testów, jak i w wierszu polecenia, ustaw tę wartość na true. |
Parallelize | Służy do ustawiania ustawień przetwarzania równoległego: Procesy robocze: liczba wątków/procesów roboczych, które mają być używane do przetwarzania równoległego, czyli domyślnie liczba procesorów na bieżącym komputerze. ZAKRES: Zakres przetwarzania równoległego. Można ustawić ją na MethodLevel. Domyślnie jest to KlasaLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
Plik ustawień | W tym miejscu możesz określić plik ustawień testowych do użycia z adapterem MSTest. Możesz również określić plik ustawień testu z menu ustawień. Jeśli określisz tę wartość, musisz również ustawić wartość ForcedLegacyMode na true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania testu.
[Timeout] atrybut określony w metodzie oczyszczania testu zastępuje limit czasu globalnego. |
TestInitializeTimeout | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody inicjowania testu.
[Timeout] atrybut określony w metodzie inicjowania testu zastępuje limit czasu globalnego. |
TestTimeout | 0 | Pobiera określony globalny limit czasu przypadku testowego. |
TreatClassAndAssemblyCleanupWarningsAsErrors | fałsz | Aby zobaczyć błędy w czyszczeniu klas jako błędy, ustaw tę wartość na true. |
TreatDiscoveryWarningsAsErrors | fałsz | Aby zgłosić ostrzeżenia dotyczące odnajdywania testów jako błędy, ustaw tę wartość na true. |
TestRunParameter
, element
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Parametry przebiegu testu umożliwiają definiowanie zmiennych i wartości dostępnych dla testów w czasie wykonywania. Uzyskaj dostęp do parametrów przy użyciu właściwości MSTest TestContext.Properties :
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Aby użyć parametrów przebiegu testu, dodaj właściwość publiczną TestContext do klasy testowej.
Przykładowy plik .runsettings
Poniższy kod XML przedstawia zawartość typowego pliku .runsettings . Skopiuj ten kod i zmodyfikuj go zgodnie z potrzebami.
Każdy element pliku jest opcjonalny, ponieważ ma wartość domyślną.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at run time -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
testconfig.json
Podczas uruchamiania testów za pomocą narzędzia MSTest można użyć pliku testconfig.json
do skonfigurowania zachowania modułu uruchamiającego testy. Plik testconfig.json
jest plikiem JSON zawierającym ustawienia konfiguracji modułu uruchamiającego testy. Plik służy do konfigurowania modułu uruchamiającego testy i środowiska wykonywania testów. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Microsoft.Testing.Platform testconfig.json.
Od wersji MSTest 3.7 można również skonfigurować przebiegi MSTest w tym samym pliku konfiguracji. W poniższych sekcjach opisano ustawienia, których można użyć w pliku testconfig.json
.
MSTest, element
Ustawienia MSTest są pogrupowane według funkcji opisanych w kolejnych sekcjach.
Wpis | Wartość domyślna | Opis |
---|---|---|
sortujTestyWedługNazwyWKlasie | fałsz | Jeśli chcesz uruchamiać testy według nazw testów zarówno w Eksploratorach testów, jak i w wierszu polecenia, ustaw tę wartość na true. |
włączMetodyTestoweKlasyBazowejZInnychZestawów | prawda | Wartość wskazująca, czy włączyć odnajdywanie metod testowych z klas bazowych w innym zestawie niż dziedzicząca klasa testowa. |
classCleanupLifecycle | KoniecMontażu | Jeśli chcesz, aby oczyszczanie klasy było wykonywane na końcu klasy, ustaw ją na EndOfClass. |
Ustawienia assemblyResolution
Wpis | Wartość domyślna | Opis |
---|---|---|
Ścieżki | Żaden | Ścieżki do dodatkowych zestawów można określić podczas znajdowania i uruchamiania testów jednostkowych. Na przykład użyj tych ścieżek dla zestawów zależności, które nie należą do tego samego katalogu co zestaw testowy. Możesz określić ścieżkę w kształcie { "path": "...", "includeSubDirectories": "true/false" } . |
Ustawienia wdrożenia
Wpis | Wartość domyślna | Opis |
---|---|---|
usuńKatalogPoWdrożeniuPoZakończeniuTestu (deleteDeploymentDirectoryAfterTestRunIsComplete) | prawda | Aby zachować katalog wdrożenia po uruchomieniu testu, ustaw tę wartość na false. |
deployTestSourceDependencies | prawda | Wskazuje, czy odwołania do źródła testowego mają zostać wdrożone. |
Włączone | prawda | Jeśli ustawisz wartość false, elementy wdrożenia określone w metodzie testowej nie zostaną skopiowane do katalogu wdrożenia. |
Ustawienia danych wyjściowych
Wpis | Wartość domyślna | Opis |
---|---|---|
captureTrace | fałsz | Przechwyć wiadomości tekstowe pochodzące z Console.Write* interfejsów API , Trace.Write* i Debug.Write* , które będą skojarzone z bieżącym uruchomionym testem. |
Ustawienia równoległości
Wpis | Wartość domyślna | Opis |
---|---|---|
Włączone | fałsz | Włącz równoległe testowanie. |
zakres | klasa | Zakres równoleglenia. Można ustawić go na method . Wartość domyślna, class , odpowiada uruchamianiu wszystkich testów danej klasy sekwencyjnie, ale wiele klas równolegle. |
Pracownicy | 0 | Liczba wątków/procesów roboczych do użycia na potrzeby przetwarzania równoległego. Domyślna wartość odpowiada liczbie procesorów w bieżącej maszynie. |
Ustawienia wykonywania
Wpis | Wartość domyślna | Opis |
---|---|---|
rozważPustąBazęDanychJakoNiejednoznaczną | fałsz | W przypadku ustawienia wartości true puste źródło danych jest uznawane za niejednoznaczne. |
rozważUstawieniaJakoSpecjalneTesty | fałsz | Aby wyświetlić AssemblyInitialize , AssemblyCleanup , ClassInitialize , ClassCleanup jako pojedyncze wpisy w programach Visual Studio i Visual Studio Code Test Explorer oraz .trx pliku dziennika, ustaw tę wartość na true. |
mapNiejednoznacznośćDoNiepowodzenia | fałsz | Jeśli test zakończy się z niejednoznacznym stanem, zostanie on zamapowany na stan pominięty w Eksploratorze testów. Jeśli chcesz, aby niejednoznaczne testy zostały pokazane jako nieudane, ustaw wartość true. |
mapujNieUruchomioneNaNiepowodzenia | prawda | Wartość wskazująca, czy wynik niemożliwy do uruchomienia jest mapowany na test, który zakończył się niepowodzeniem. |
traktujOstrzeżeniaCzyszczeniaKlasyIZestawuJakoBłędy | fałsz | Aby zobaczyć błędy w czyszczeniu klas jako błędy, ustaw tę wartość na true. |
Traktuj ostrzeżenia związane z wykryciem jako błędy | fałsz | Aby zgłosić ostrzeżenia dotyczące odnajdywania testów jako błędy, ustaw tę wartość na true. |
Ustawienia limitu czasu
Wpis | Wartość domyślna | Opis |
---|---|---|
assemblyCleanup | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania zestawu. |
assemblyInitialize | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu zestawu zainicjuj metodę. |
classCleanup | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania klasy. |
classInitialize | 0 | Określ globalnie limit czasu, który ma być stosowany dla każdego wystąpienia klasy inicjowania metody. |
próba | 0 | Określ globalnie limit czasu testu. |
testCleanup | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody oczyszczania testu. |
testInitialize | 0 | Określ globalnie limit czasu, który ma być stosowany w każdym wystąpieniu metody inicjowania testu. |
useCooperativeCancellation | fałsz | Po ustawieniu na true , w przypadku przekroczenia czasu, narzędzie MSTest wyzwoli anulowanie CancellationToken , ale nie zaprzestanie obserwacji metody. To zachowanie jest bardziej wydajne, ale polega na tym, że użytkownik poprawnie przepuszcza token przez wszystkie ścieżki. |
Notatka
[Timeout]
atrybut określony dla metody zastępuje globalny limit czasu. Na przykład [Timeout(1000)]
w metodzie oznaczonej [AssemblyCleanup] zastąpi globalny limit czasu assemblyCleanup
.
Przykładowy plik testconfig.json
Poniższy kod JSON przedstawia zawartość typowego pliku .testconfig.json. Skopiuj ten kod i zmodyfikuj go zgodnie z potrzebami.
Każdy element pliku jest opcjonalny, ponieważ ma wartość domyślną.
{
"platformOptions": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}