TestInitialize vs ClassInitialize

Wat is het verschil tussen TestInitializeen ClassInitializein MSTest? Wat zijn de voor- en nadelen van elk?

Ik heb de indruk dat TestInitialzeelke keer bij ELKE test moet worden uitgevoerd? Is dat correct? En dat ClassInitializeelke keer wordt uitgevoerd als er een nieuwe instantie van een klasse is?


Antwoord 1, autoriteit 100%

Beide attributen zijn alleen beschikbaar voor de klassen (en dus tests) waar ze thuishoren.

TestInitializewordt vóór elke testuitgevoerd die is gedeclareerd in de dezelfde klasseals waar het kenmerk is gedeclareerd.

ClassInitializewordt alleenuitgevoerd bij de initialisatie van de klasse waarin het kenmerk is gedeclareerd. Met andere woorden, het werkt niet voor elke klasse. Alleen voor de klasse die de methode ClassInitializebevat.

Als je een methode wilt die één keer wordt uitgevoerd voordat alle tests of klassen worden geïnitialiseerd, gebruik dan de AssemblyInitialize.


Antwoord 2

Aangezien ClassInitialize en ClassCleanUp statisch zijn, worden ze slechts één keer uitgevoerd, ook al kunnen er meerdere exemplaren van een testklasse worden gemaakt door MSTest.

Je kunt er hier meer over lezen: Die vervelende MSTest-uitvoeringsopdracht.. docs.microsoft.com

Other episodes