Wat is het verschil tussen TestInitialize
en ClassInitialize
in MSTest? Wat zijn de voor- en nadelen van elk?
Ik heb de indruk dat TestInitialze
elke keer bij ELKE test moet worden uitgevoerd? Is dat correct? En dat ClassInitialize
elke 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.
TestInitialize
wordt vóór elke testuitgevoerd die is gedeclareerd in de dezelfde klasseals waar het kenmerk is gedeclareerd.
ClassInitialize
wordt 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 ClassInitialize
bevat.
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