2009-09-15 13 views
50

Domanda veloce, come si crea un metodo che viene eseguito solo una volta prima dell'esecuzione di tutti i test nella soluzione.Metodo di inizializzazione test globale per MSTest

+0

Vorrei saperlo, anche :(Attualmente, ho una classe base astratta da cui ogni TestClass eredita. All'interno di quella classe, ho un metodo TestInitialize. Il problema è che quel metodo viene sparato ogni volta che viene eseguito un nuovo test ! –

+0

La classe base astratta implementa un costruttore statico e verrà eseguita una sola volta prima dell'esecuzione di uno qualsiasi dei test: – mglmnc

risposta

88

Creare un metodo statico pubblico, decorato con l'attributo AssemblyInitialize. Il framework di test chiamerà questo Setup metodo una volta alla prova:

[AssemblyInitialize()] 
public static void MyTestInitialize(TestContext testContext) 
{} 

Per tearDown sua:

[AssemblyCleanup] 
public static void TearDown() 
{} 

EDIT:

Un altro dettaglio molto importante: la classe a cui questo metodo appartiene deve essere decorato con [TestClass]. In caso contrario, il metodo di inizializzazione non verrà eseguito.

+3

Se sono stati eseguiti test in più di un assieme, MyTestInitialize verrà chiamato più volte per l'esecuzione del test . – BenCr

Problemi correlati