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


MSTest-életciklus

Az MSTest egy jól definiált életciklust biztosít a tesztosztályokhoz és a tesztelési módszerekhez, lehetővé téve a beállítási és a lebontási műveleteket a tesztvégrehajtási folyamat különböző szakaszaiban. Az életciklus a következő három szakaszba csoportosítható:

  • Szerelvényszintű életciklus
  • Osztályszintű életciklus
  • Tesztszintű életciklus

Az életciklus-események végrehajtása a legmagasabb szinttől (szerelvénytől) a legalacsonyabb szintig (vizsgálati módszer) történik. A végrehajtás sorrendje a következő:

  1. Szerelvény inicializálása
  2. Osztály inicializálása (minden tesztosztályhoz)
  3. Tesztelési inicializálás (minden vizsgálati módszerhez)
  4. Teszt végrehajtása
  5. Tesztkarbantartás (minden vizsgálati módszerhez)
  6. Teszt-osztályok tisztítása (minden egyes teszt-osztályhoz)
  7. Szerelvény takarítása

Szerelvényszintű életciklus

A szerelvény életciklusa a teljes szerelvény életciklusát ismerteti, amely magában foglalja az összes tesztosztályt és metódust. A szerelvény életciklusának kezeléséhez az MSTest biztosítja a AssemblyInitialize és a AssemblyCleanup attribútumokat. Ezekről az attribútumokról a AssemblyInitialize és a AssemblyCleanup dokumentációjában talál további információt.

Osztályszintű életciklus

A tesztosztály életciklusa a szerelvényen belüli egyes tesztosztályok életciklusára vonatkozik, és a ClassInitialize és a ClassCleanup attribútumokkal valósítható meg. Ezek az attribútumok lehetővé teszik az osztály összes tesztje előtt és után végrehajtott beállítási és lebontási módszerek definiálását. Ezekről az attribútumokról további információt a ClassInitialize és a ClassCleanup dokumentációjában talál. Az osztályszintű életciklus osztályonként csak egyszer fut, függetlenül az osztályban lévő tesztek számától.

Tesztszint életciklus

A tesztszintű életciklus minden vizsgálati módszerhez végrehajtásra kerül. A paraméteres tesztek esetében a rendszer minden paraméterkészletet külön vizsgálati módszerként kezel, és az életciklust minden paraméterkészlet esetében végrehajtja a rendszer. A tesztszintű életciklus a telepítés, a végrehajtás és a törlés szerint csoportosítható úgy, hogy a beállítás és a törlés több implementálási módot is támogat.

Beállítás

A tesztszintű életciklus beállítási fázisa felelős a tesztkörnyezet előkészítéséért az egyes vizsgálati módszerek végrehajtása előtt. Ez az TestInitialize attribútummal vagy a tesztosztály konstruktorának implementálásával érhető el. Öröklés esetén a metódusok végrehajtása TestInitialize az alaposztály és a származtatott osztály sorrendjét követi. Ha egy tesztosztály konstruktort implementál, azt a metódus előtt hajtja végre.TestInitialize Az attribútummal kapcsolatos TestInitialize további információkért tekintse meg a tesztszintű attribútum dokumentációját.

Megjegyzés:

Az osztálykonstruktortól eltérően a metódusok aszinkronok is lehetnek, TestInitialize és támogatják az attribútumhasználatot, például a TimeoutAttribute.

Kivégzés

A végrehajtási fázis a tényleges vizsgálati módszer végrehajtásának fázisa. Ha egy tesztmetódus egy Taskot vagy ValueTaskot ad vissza, a tesztmetódus meg lesz várva.

Figyelmeztetés

Aszinkron tesztelési módszerek esetén nincs biztosítva a SynchronizationContext. Ez nem vonatkozik az UITestMethod UWP- és WinUI-tesztekre, mivel azok a SynchronizationContextet futtató felhasználói felületi szálon futnak.

Takarítás

A tesztszintű életciklus tisztítási fázisa felelős a tesztkörnyezet megtisztításáért az egyes vizsgálati módszerek végrehajtása után. Ez az attribútummal vagy a TestCleanup tesztosztály felületének IDisposable/IAsyncDisposable implementálásával érhető el. Ha egy tesztosztály implementálja a IDisposable vagy a IAsyncDisposable interfészt, akkor a Dispose metódus után a /DisposeAsyncTestCleanup metódust hajtja végre. Öröklés esetén a TestCleanup metódusok végrehajtása a származtatott osztály és az alaposztály sorrendjét követi. Az attribútummal kapcsolatos TestInitialize további információkért tekintse meg a tesztszintű attribútum dokumentációját.

Rendelés

A tesztszintű életciklus teljes sorrendje a következő:

  1. Tesztosztály példányának létrehozása
  2. A(z) TestContext tulajdonság beállítása, ha van
  3. A TestInitialize futtatása (ha implementálva van)
  4. Tesztmetódus végrehajtása
  5. Frissítés TestContext teszteredményekkel (például Outcome tulajdonsággal)
  6. A TestCleanup futtatása implementálva
  7. Futtasd az DisposeAsync-et, ha implementálva van
  8. Ha implementálva van, futtassa a felszabadítást