Megosztás a következőn keresztül:


AZ MSTest konfigurálása

Az MSTest, a Microsoft tesztelési keretrendszere a .NET-alkalmazások tesztelési keretrendszere. Lehetővé teszi a tesztek írását és végrehajtását, valamint a Visual Studio és a Visual Studio Code Test Explorersbe, a .NET CLI-be és számos CI-folyamatba való integrációval rendelkező tesztcsomagokat.

Az MSTest egy teljes mértékben támogatott, nyílt forráskódú és platformfüggetlen tesztelési keretrendszer, amely a GitHubon üzemeltetett összes támogatott .NET-cél (.NET-keretrendszer, .NET Core, .NET, UWP, WinUI stb.) használatával működik.

Futtatási beállítások

A .runsettings-fájlokkal konfigurálható az egységtesztek futtatása. Ha többet szeretne megtudni a runsettingsról és a platformhoz kapcsolódó konfigurációkról, tekintse meg a VSTest runsettings dokumentációját vagy az MSTest futó runsettings dokumentációját.

MSTest elem

Az alábbi runsettings bejegyzések segítségével konfigurálhatja az MSTest viselkedését.

Konfiguráció Alapértelmezett Értékek
AssemblyCleanupTimeout 0 Adja meg globálisan a szerelvénykarbantartási módszer egyes példányaira alkalmazandó időtúllépést. [Timeout] Az összeállítási tisztítási metódusban megadott attribútum felülírja a globális időkorlátot.
AssemblyInitializeTimeout 0 Adja meg globálisan az egyes szerelvény-inicializálási metódusokra alkalmazandó időtúllépést. [Timeout] az assembly inicializáló metódusában megadott attribútum felülbírálja a globális timeoutot.
Közgyűlési Határozat hamis Az egységtesztek keresésekor és futtatásakor megadhatja a további szerelvények elérési útját. Ezeket az elérési utakat használhatja például olyan függőségi szerelvényekhez, amelyek nem ugyanabban a könyvtárban találhatók, mint a tesztszerelvény. Az elérési út megadásához használjon egy címtárelérési elem. Az elérési utak környezeti változókat is tartalmazhatnak.

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

Ez a funkció csak .NET-keretrendszer-cél használatakor alkalmazható.
CaptureTraceOutput igaz Rögzítse az Console.Write*aktuális futó teszthez társított , Trace.Write*és Debug.Write* API-kból érkező szöveges üzeneteket.
ClassCleanupLifecycle EndOfClass Ha azt szeretné, hogy az osztály tisztítása a szerelvény végén történjen, állítsa EndOfAssembly értékre. (Az MSTest 4-es verziótól kezdve már nem támogatott, mivel az EndOfClass az alapértelmezett és csak ClassCleanup viselkedés)
ClassCleanupTimeout 0 Adja meg globálisan az osztályok takarítási módszerei egyes példányaira alkalmazandó időtúllépést. [Timeout] az osztálytisztítási metódusban megadott attribútum felülbírálja a globális időtúllépést.
ClassInitializeTimeout 0 Adja meg globálisan az egyes osztály inicializálási metódusokra alkalmazandó időtúllépést. [Timeout] az osztály inicializálási metódusában megadott attribútum felülírja a globális időtúllépést.
Tekintse a rögzítéseket speciális teszteknek hamis A Visual Studio és Visual Studio Code , , , elemek külön bejegyzésekként való megjelenítéséhez a és .trx naplóban állítsa ezt az értéket true értékre.
Tesztfutás befejezése után törölje a telepítési könyvtárat igaz Ha meg szeretné őrizni az üzembehelyezési könyvtárat a tesztfuttatás után, állítsa ezt az értéket false-ra.
Telepítés Engedélyezve igaz Ha hamis értékre állítja be az értéket, a tesztmetódusban megadott üzembehelyezési elemek nem lesznek átmásolva az üzembehelyezési könyvtárba.
DeployTestSourceDependencies igaz Egy érték, amely jelzi, hogy a tesztforrás hivatkozásait üzembe kell-e helyezni.
Alap osztály teszt metódusainak engedélyezése más összeállításokból igaz Egy érték, amely azt jelzi, hogy engedélyezi-e a vizsgálati módszerek felderítését az öröklő tesztosztálytól eltérő szerelvény alaposztályaiból.
ForcedLegacyMode hamis A Visual Studio régebbi verzióiban az MSTest-adaptert úgy optimalizálták, hogy gyorsabb és skálázhatóbb legyen. Előfordulhat, hogy bizonyos viselkedések, például a tesztek futtatásának sorrendje nem pontosan olyan, mint a Visual Studio korábbi kiadásaiban. Állítsa az értéket a igaz értékre a régebbi tesztadapter használatához.

Ezt a beállítást például akkor használhatja, ha egy app.config fájl van megadva egy egységteszthez.

Javasoljuk, hogy fontolja meg a tesztek újrabontását, hogy lehetővé tegye az újabb adapter használatát.
TérképEredménytelenSikertelenre hamis Ha egy teszt nem meggyőző állapottal fejeződik be, azt a Test Explorer kihagyott állapotára térképezik fel. Ha azt szeretné, hogy a nem meggyőző tesztek sikertelenként jelenjenek meg, állítsa az értéket igaz értékre.
NemFuttathatóTérképHibáraÁllítása igaz Egy érték, amely azt jelzi, hogy egy nem futtatható eredmény megfeleltethető-e a sikertelen tesztnek.
OrderTestsByNameInClass hamis Ha tesztnevekkel szeretné futtatni a teszteket mind a Tesztböngészőkben, mind a parancssorban, állítsa ezt az értéket igaz.
Párhuzamosítás A párhuzamosítási beállítások megadására szolgál:

Feldolgozók: A párhuzamosításhoz használandó szálak/feldolgozók száma, amely alapértelmezés szerint az aktuális gépen lévő processzorok száma.

HATÓKÖR: A párhuzamosítás hatóköre. A beállítást „MethodLevel” értékre végezheti el. Alapértelmezés szerint ez ClassLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
BeállításokFájl Itt adhatja meg az MSTest-adapterrel használni kívánt tesztbeállításokat. A beállítások menüben egy tesztbeállításokat tartalmazó fájlt is megadhat.

Ha ezt az értéket adja meg, a ForcedLegacyMode értékét is igaz értékre kell állítania.

<ForcedLegacyMode>true</ForcedLegacyMode>
TestCleanupTimeout 0 Adja meg globálisan az időkorlátot, amelyet a teszttakarítási módszer minden egyes példányára alkalmazni kell. [Timeout] A teszt-tisztítási módszerben megadott attribútum felülírja a globális időkorlátot.
TestInitializeTimeout 0 Adja meg globálisan a tesztelési inicializálási módszer egyes példányaira alkalmazandó időtúllépést. [Timeout] a teszt inicializáló metódusában megadott attribútum felülírja a globális időkorlátot.
TestTimeout 0 Lekéri a globális teszteset megadott időtúllépési idejét.
Kezelje az osztály- és összeszerelési tisztítási figyelmeztetéseket hibaként hamis Ha hibaként szeretné látni az osztálytakarítás során felmerülő problémákat, állítsa ezt az értéket igaz-ra.
Felfedezési figyelmeztetések hibaként kezelése hamis Ha hibaként szeretné jelenteni a tesztfelderítési figyelmeztetéseket, állítsa ezt az értéket igaz értékre.

TestRunParameter elem

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

A tesztfuttatási paraméterek lehetővé teszik olyan változók és értékek definiálásának módját, amelyek futásidőben érhetők el a tesztekhez. A paraméterek elérése az MSTest TestContext.Properties tulajdonság használatával:

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

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

Tesztfuttatási paraméterek használatához adjon hozzá egy nyilvános TestContext tulajdonságot a tesztosztályhoz.

Példa .runsettings fájlra

Az alábbi XML egy tipikus .runsettings-fájl tartalmát mutatja be. Másolja ki ezt a kódot, és szerkessze az igényeinek megfelelően.

A fájl minden eleme nem kötelező, mert alapértelmezett értékkel rendelkezik.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>

  <!-- Parameters used by tests at runtime -->
  <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

Ha msTesttel futtatja a teszteket, egy testconfig.json fájl használatával konfigurálhatja a tesztfuttató viselkedését. A testconfig.json fájl egy JSON-fájl, amely a tesztfuttató konfigurációs beállításait tartalmazza. A fájl a tesztfuttató és a tesztvégrehajtási környezet konfigurálására szolgál. További információért lásd a Microsoft.Testing.Platform testconfig.json dokumentációt.

Az MSTest 3.7-től kezdve az MSTest-futtatások ugyanabban a konfigurációs fájlban is konfigurálhatók. Az alábbi szakaszok a testconfig.json fájlban használható beállításokat ismertetik.

MSTest elem

Az MSTest-beállítások a következő szakaszokban ismertetett funkciók szerint vannak csoportosítva.

Bejegyzés Alapértelmezett Leírás
teszteketOsztályNévSzerintRendez hamis Ha tesztnevekkel szeretné futtatni a teszteket mind a Tesztböngészőkben, mind a parancssorban, állítsa ezt az értéket igaz.
engediBaseClassTestMethodsMásGyűjteményekből igaz Egy érték, amely azt jelzi, hogy engedélyezi-e a vizsgálati módszerek felderítését az öröklő tesztosztálytól eltérő szerelvény alaposztályaiból.
classCleanupLifecycle Összeszerelés Vége Ha azt szeretné, hogy az osztály tisztítása az osztály végén történjen meg, állítsa EndOfClass.

assemblyResolution beállítások

A szakasz összes beállítása a assemblyResolution elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
Útvonalak Egyik sem Az egységtesztek keresésekor és futtatásakor megadhatja a további szerelvények elérési útját. Ezeket az elérési utakat használhatja például olyan függőségi szerelvényekhez, amelyek nem ugyanabban a könyvtárban találhatók, mint a tesztszerelvény. Megadhat egy elérési utat az alakzatban { "path": "...", "includeSubDirectories": "true/false" }.

Példa:

{
  "mstest": {
    "assemblyResolution": {
        { "path": "...", "includeSubDirectories": "true/false" }
    }
  }
}

deployment beállítások

A szakasz összes beállítása a deployment elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
töröljeAzTelepítésiKönyvtáratAmintATesztFutásBefejeződött igaz Ha meg szeretné őrizni az üzembehelyezési könyvtárat a tesztfuttatás után, állítsa ezt az értéket false-ra.
tesztforrásfüggőségek telepítése igaz Azt jelzi, hogy a tesztforrás hivatkozásait üzembe kell-e helyezni.
Engedélyezve igaz Ha hamis értékre állítja be az értéket, a tesztmetódusban megadott üzembehelyezési elemek nem lesznek átmásolva az üzembehelyezési könyvtárba.

Példa:

{
  "mstest": {
    "deployment": {
        "deleteDeploymentDirectoryAfterTestRunIsComplete": true,
        "deployTestSourceDependencies": true,
        "enabled": true
    }
  }
}

output beállítások

A szakasz összes beállítása a output elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
captureTrace igaz Rögzítse az Console.Write*aktuális futó teszthez társított , Trace.Write*és Debug.Write* API-kból érkező szöveges üzeneteket.

Példa:

{
  "mstest": {
    "output": {
        "captureTrace": false
    }
  }
}

parallelism beállítások

A szakasz összes beállítása a parallelism elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
Engedélyezve hamis A tesztelés párhuzamosításának engedélyezése.
hatókör osztály A párhuzamosítás hatóköre. Beállíthatja a methodbeállítást. Az alapértelmezett classegy adott osztály összes tesztjének szekvenciális, de több osztály párhuzamos futtatásának felel meg.
Munkavállalók 0 A párhuzamosításhoz használandó szálak/feldolgozók száma. Az alapértelmezett érték megfelel az aktuális gépen lévő processzorok számának.

Példa:

{
  "mstest": {
    "parallelism": {
        "enabled": true,
        "scope": "method",
        "workers": 32
    }
  }
}

execution beállítások

A szakasz összes beállítása a execution elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
tekintsÜresAdatforrástMintDöntetlen hamis Ha trueértékre van állítva, az üres adatforrások nem tekinthetők meggyőzőnek.
Tekintse a berendezéseket különleges teszteknek hamis Ha a AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup elemeket egyéni bejegyzésként szeretné megjeleníteni a Visual Studio, Visual Studio Code, valamint Test Explorer és .trx naplójában, állítsa ezt az értéket igaz.
térképezni a nem meggyőzőt sikertelenséghez hamis Ha egy teszt nem meggyőző állapottal fejeződik be, azt a Test Explorer kihagyott állapotára térképezik fel. Ha azt szeretné, hogy a nem meggyőző tesztek sikertelenként jelenjenek meg, állítsa az értéket igaz értékre.
nem futtatható leképezése sikertelenként igaz Egy érték, amely azt jelzi, hogy egy nem futtatható eredmény megfeleltethető-e a sikertelen tesztnek.
Osztály és Összeszerelési Tisztítási Figyelmeztetések Hibaként Kezelése hamis Ha hibaként szeretné látni az osztálytakarítás során felmerülő problémákat, állítsa ezt az értéket igaz-ra.
Felfedezési figyelmeztetések kezelése hibaként hamis Ha hibaként szeretné jelenteni a tesztfelderítési figyelmeztetéseket, állítsa ezt az értéket igaz értékre.

Példa:

{
  "mstest": {
    "execution": {
        "considerEmptyDataSourceAsInconclusive": false,
        "considerFixturesAsSpecialTests": false,
        "mapInconclusiveToFailed": true,
        "mapNotRunnableToFailed": true,
        "treatClassAndAssemblyCleanupWarningsAsErrors": false,
        "treatDiscoveryWarningsAsErrors": false
    }
  }
}

timeout beállítások

A szakasz összes beállítása a timeout elemhez tartozik.

Bejegyzés Alapértelmezett Leírás
összeállítás-tisztítás 0 Adja meg globálisan a szerelvénykarbantartási módszer egyes példányaira alkalmazandó időtúllépést.
összeállításInicializálás 0 Adja meg globálisan az egyes szerelvény-inicializálási metódusokra alkalmazandó időtúllépést.
osztálykód-tisztítás 0 Adja meg globálisan az osztályok takarítási módszerei egyes példányaira alkalmazandó időtúllépést.
osztályInicializálás 0 Adja meg globálisan az egyes osztály inicializálási metódusokra alkalmazandó időtúllépést.
teszt 0 Adja meg globálisan a teszt időtúllépését.
testCleanup 0 Adja meg globálisan az időkorlátot, amelyet a teszttakarítási módszer minden egyes példányára alkalmazni kell.
tesztInicializálás 0 Adja meg globálisan a tesztelési inicializálási módszer egyes példányaira alkalmazandó időtúllépést.
használjKooperatívTörlést hamis Ha trueértékre van állítva, időtúllépés esetén az MSTest csak a CancellationToken törlését indítja el, de nem állítja le a metódus megfigyelését. Ez a viselkedés hatékonyabb, de a felhasználóra támaszkodik, hogy megfelelően továbbítsa a tokent az összes útvonalon.

Jegyzet

[Timeout] metódusban megadott attribútum felülírja a globális időtúllépést. Például, egy [AssemblyCleanup] jelölésű metóduson a [Timeout(1000)] felülbírálja a globális assemblyCleanup időkorlátot.

Példa:

{
  "mstest": {
    "timeout": {
        "assemblyCleanup": 0,
        "assemblyInitialize": 0,
        "classCleanup": 0,
        "classInitialize": 0,
        "test": 0,
        "testCleanup": 0,
        "testInitialize": 0,
        "useCooperativeCancellation": false
    }
  }
}

Példa testconfig.json fájlra

Az alábbi JSON egy tipikus .testconfig.json fájl tartalmát mutatja be. Másolja ki ezt a kódot, és szerkessze az igényeinek megfelelően.

A fájl minden eleme nem kötelező, mert alapértelmezett értékkel rendelkezik.

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