Sdílet prostřednictvím


Konfigurace MSTestu

MSTest, Microsoft Testing Framework, je testovací rozhraní pro aplikace .NET. Umožňuje psát a spouštět testy a poskytovat testovací sady s integrací do Průzkumníků testů visual Studio a Visual Studio Code, rozhraní příkazového řádku .NET a mnoha kanálů CI.

MSTest je plně podporovaná opensourcová a multiplatformní testovací architektura, která funguje se všemi podporovanými cíli .NET (.NET Framework, .NET Core, .NET, UPW, WinUI atd.) hostovanými na GitHubu.

Runsettings

Soubor .runsettings lze použít ke konfiguraci způsobu spouštění testů jednotek. Další informace o runsettings a konfiguracích souvisejících s platformou najdete v dokumentaci ke spuštění VSTest nebo dokumentaci k runsettings msTest runneru.

MSTest – element

Následující položky runsettings umožňují nakonfigurovat, jak se MSTest chová.

Konfigurace Výchozí Hodnoty
AssemblyCleanupTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody vyčištění sestavení. [Timeout] atribut zadaný v metodě vyčištění sestavení přepíše globální časový limit .
AssemblyInitializeTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace sestavení. [Timeout] atribut zadaný v sestavení inicializace metoda přepíše globální časový limit .
AssemblyResolution false (nepravda) Při hledání a spouštění testů jednotek můžete určit cesty k dalším sestavením. Tyto cesty použijte například pro sestavení závislostí, která nejsou ve stejném adresáři jako testovací sestavení. Chcete-li zadat cestu, použijte element Cesta adresáře . Cesty můžou zahrnovat proměnné prostředí.

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

Tato funkce se použije pouze při použití cíle rozhraní .NET Framework.
CaptureTraceOutput true Zachyťte textové zprávy přicházející z Console.Write*Trace.Write*rozhraní API a Debug.Write* rozhraní API, která budou přidružena k aktuálnímu spuštěném testu.
ClassCleanupLifecycle EndOfClass Pokud chcete, aby vyčištění třídy na konci sestavení, nastavte ho na EndOfAssembly. (Od MSTest v4 se už nepodporuje, protože EndOfClass je výchozí a pouze Chování TřídyCleanup )
ClassCleanupTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody čištění třídy. [Timeout] atribut zadaný v metodě vyčištění třídy přepíše globální časový limit.
ClassInitializeTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace třídy. [Timeout] atribut zadaný v metodě inicializace třídy přepíše globální časový limit.
ConsiderFixturesAsSpecialTests false (nepravda) Chcete-li zobrazit AssemblyInitialize, AssemblyCleanup, , ClassInitializejako ClassCleanup jednotlivé položky v sadě Visual Studio a Visual Studio Code Test Explorer a .trx log, nastavte tuto hodnotu na true
DeleteDeploymentDirectoryAfterTestRunIsComplete true Pokud chcete zachovat adresář nasazení po testovacím spuštění, nastavte tuto hodnotu na false.
DeploymentEnabled true Pokud nastavíte hodnotu na false, položky nasazení, které zadáte v testovací metodě, se do adresáře nasazení nekopírují.
DeployTestSourceDependencies true Hodnota označující, zda mají být nasazeny odkazy na zdroj testů.
EnableBaseClassTestMethodsFromOtherAssemblies true Hodnota označující, zda povolit zjišťování testovacích metod ze základních tříd v jiném sestavení než dědění testovací třídy.
ForcedLegacyMode false (nepravda) Ve starších verzích sady Visual Studio byl adaptér MSTest optimalizovaný tak, aby byl rychlejší a škálovatelný. Některé rysy chování sady, jako například pořadí, ve kterém jsou testy spuštěny, nemusí být přesně stejné jako v předchozích edicích sady Visual Studio. Nastavte hodnotu true tak, aby používala starší testovací adaptér.

Toto nastavení můžete použít například v případě, že máte soubor app.config určený pro test jednotek.

Doporučujeme zvážit refaktoring testů, aby bylo možné použít novější adaptér.
MapInconclusiveToFailed false (nepravda) Pokud se test dokončí s neprůhledným stavem, mapuje se na vynechaný stav v Průzkumníku testů. Pokud chcete, aby se neclusivní testy zobrazovaly jako neúspěšné, nastavte hodnotu na true.
MapNotRunnableToFailed true Hodnota označující, zda není spustitelný výsledek namapován na neúspěšný test.
OrderTestsByNameInClass false (nepravda) Pokud chcete spustit testy podle názvů testů v Průzkumníkech testů i na příkazovém řádku, nastavte tuto hodnotu na true.
Paralelně umístit Slouží k nastavení paralelizace:

Pracovní procesy: Počet vláken/pracovních procesů, které se mají použít pro paralelizaci, což je ve výchozím nastavení počet procesorů na aktuálním počítači.

SCOPE: Rozsah paralelizace. Můžete ho nastavit na MethodLevel. Ve výchozím nastavení je to ClassLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
SettingsFile Tady můžete zadat soubor nastavení testu, který se má použít s adaptérem MSTest. Můžete také zadat soubor nastavení testu z nabídky nastavení.

Pokud zadáte tuto hodnotu, musíte také nastavit ForcedLegacyMode na true.

<ForcedLegacyMode>true</ForcedLegacyMode>
TestCleanupTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody vyčištění testu. [Timeout] atribut zadaný v metodě vyčištění testu přepíše globální časový limit.
TestInitializeTimeout 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace testu. [Timeout] atribut zadaný v metodě inicializace testu přepíše globální časový limit.
TestTimeout 0 Získá zadaný časový limit globálního testovacího případu.
TreatClassAndAssemblyCleanupWarningsAsErrors false (nepravda) Pokud chcete zobrazit chyby v čištění tříd jako chyby, nastavte tuto hodnotu na true.
TreatDiscoveryWarningsAsErrors false (nepravda) Pokud chcete nahlásit upozornění zjišťování testů jako chyby, nastavte tuto hodnotu na true.

TestRunParameter – element

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>

Parametry testovacího spuštění poskytují způsob, jak definovat proměnné a hodnoty, které jsou k dispozici pro testy za běhu. Přístup k parametrům pomocí vlastnosti MSTest TestContext.Properties :

private string _appUrl;
public TestContext TestContext { get; set; }

[TestMethod]
public void HomePageTest()
{
    string _appUrl = TestContext.Properties["webAppUrl"];
}

Pokud chcete použít parametry testovacího spuštění, přidejte do testovací třídy veřejnou TestContext vlastnost.

Příklad souboru .runsettings

Následující xml ukazuje obsah typického souboru .runsettings . Zkopírujte tento kód a upravte ho tak, aby vyhovoval vašim potřebám.

Každý prvek souboru je volitelný, protože má výchozí hodnotu.

<?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

Při spouštění testů pomocí msTestu můžete ke konfiguraci chování spouštěče testů použít soubor testconfig.json. Soubor testconfig.json je soubor JSON, který obsahuje nastavení konfigurace pro spouštěč testů. Tento soubor slouží ke konfiguraci spouštěče testů a testovacího spouštěcího prostředí. Další informace najdete v dokumentaciMicrosoft.Testing.Platform testconfig.json .

Počínaje verzí MSTest 3.7 můžete také nakonfigurovat spuštění MSTest ve stejném konfiguračním souboru. Následující části popisují nastavení, která můžete použít v souboru testconfig.json.

MSTest – element

Nastavení MSTest jsou seskupené podle funkcí popsaných v následujících částech.

Položka Výchozí Popis
seřaditTestyPodleJménaVTřídě false (nepravda) Pokud chcete spustit testy podle názvů testů v Průzkumníkech testů i na příkazovém řádku, nastavte tuto hodnotu na true.
povolit testovací metody základní třídy z jiných sestavení true Hodnota označující, zda povolit zjišťování testovacích metod ze základních tříd v jiném sestavení než dědění testovací třídy.
classCleanupLifecycle EndOfAssembly Pokud chcete, aby čištění třídy probíhalo na konci třídy, nastavte ho na EndOfClass.

Nastavení AssemblyResolution

Položka Výchozí Popis
stezky Žádný Při hledání a spouštění testů jednotek můžete určit cesty k dalším sestavením. Tyto cesty použijte například pro sestavení závislostí, která nejsou ve stejném adresáři jako testovací sestavení. Cestu můžete zadat ve tvaru { "path": "...", "includeSubDirectories": "true/false" }.

Nastavení nasazení

Položka Výchozí Popis
deleteDeploymentDirectoryAfterTestRunIsComplete true Pokud chcete zachovat adresář nasazení po testovacím spuštění, nastavte tuto hodnotu na false.
deployTestSourceDependencies true Určuje, zda mají být nasazeny referenční zdroje testu.
povoleno true Pokud nastavíte hodnotu na false, položky nasazení, které zadáte v testovací metodě, se do adresáře nasazení nekopírují.

Nastavení výstupu

Položka Výchozí Popis
captureTrace false (nepravda) Zachyťte textové zprávy přicházející z Console.Write*Trace.Write*rozhraní API a Debug.Write* rozhraní API, která budou přidružena k aktuálnímu spuštěném testu.

Nastavení paralelismu

Položka Výchozí Popis
povolený false (nepravda) Povolte paralelizaci testů.
rozsah třída Rozsah paralelizace. Můžete ho nastavit na method. Výchozí classodpovídá spuštění všech testů dané třídy postupně, ale více tříd paralelně.
dělníci 0 Počet vláken/pracovních procesů, které se mají použít pro paralelizaci. Výchozí hodnota odpovídá počtu procesorů na aktuálním počítači.

Nastavení spuštění

Položka Výchozí Popis
považovatPrázdnýZdrojDatZaNepřesvědčivý false (nepravda) Při nastavení na truese prázdný zdroj dat považuje za neprůkazný.
zvažovatPevnéBodyJakoZvláštníTesty false (nepravda) Chcete-li zobrazit AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup jako jednotlivé položky v sadě Visual Studio a Visual Studio Code Test Explorer a .trx protokolu, nastavte tuto hodnotu na true.
mapInconclusiveToFailed false (nepravda) Pokud se test dokončí s neprůhledným stavem, mapuje se na vynechaný stav v Průzkumníku testů. Pokud chcete, aby se neclusivní testy zobrazovaly jako neúspěšné, nastavte hodnotu na true.
mapNeproveditelnýNaSelhaný true Hodnota označující, zda není spustitelný výsledek namapován na neúspěšný test.
treatClassAndAssemblyCleanupWarningsAsErrors false (nepravda) Pokud chcete zobrazit chyby v čištění tříd jako chyby, nastavte tuto hodnotu na true.
treatDiscoveryWarningsAsErrors (zacházejte s varováními při objevování jako s chybami) false (nepravda) Pokud chcete nahlásit upozornění zjišťování testů jako chyby, nastavte tuto hodnotu na true.

Nastavení časového limitu

Položka Výchozí Popis
assemblyCleanup 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody vyčištění sestavení.
assemblyInitialize 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace sestavení.
classCleanup 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody čištění třídy.
classInitialize 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace třídy.
test 0 Zadejte globálně časový limit testu.
testCleanup 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody vyčištění testu.
testInitialize 0 Zadejte globálně časový limit, který se má použít pro každou instanci metody inicializace testu.
použítKooperativníZrušení false (nepravda) Pokud je nastavena na true, v případě časového limitu MSTest aktivuje pouze zrušení CancellationToken, ale nezastaví sledování metody. Toto chování je výkonnější, ale spoléhá na uživatele, aby správně tok tokenu prošel všemi cestami.

Poznámka

Atribut [Timeout] zadaný na metodě přepíše globální časový limit. Například [Timeout(1000)] u metody označené [AssemblyCleanup] přepíše globální časový limit assemblyCleanup.

Příklad souboru testconfig.json

Následující json ukazuje obsah typického souboru .testconfig.json. Zkopírujte tento kód a upravte ho tak, aby vyhovoval vašim potřebám.

Každý prvek souboru je volitelný, protože má výchozí hodnotu.

{
  "platformOptions": {
  },
  "mstest": {
    "execution": {
        "mapInconclusiveToFailed" : true,
        "disableAppDomain": true,
        "considerFixturesAsSpecialTests" : false,
    },
    "parallelism" : {
        "enabled": true,
        "scope": "method",
    },
    "output": {
        "captureTrace": false
    }
  }
}