2010-07-06 3 views
39

Dove devo inserire il codice che deve essere eseguito una sola volta (e non una sola volta per classe)? Un esempio per questo sarebbe una dichiarazione che inizializza la stringa di connessione DB. E ho solo bisogno di farlo una volta e non voglio mettere un nuovo metodo all'interno di ogni classe "TestFixture" solo per farlo.Inizializzazione One Time per Nunit

risposta

46

L'attributo [SetUpFixture] consente di eseguire il codice di installazione e/o di rimozione una volta per tutti i test con lo stesso spazio dei nomi.

Here sono i documenti su SetUpFixture. Secondo la documentazione:

Un SetUpFixture fuori di ogni namespace fornisce punto e smontare per l'intero assemblaggio.

Quindi se avete bisogno SetUp e TearDown per tutte le prove, poi basta assicurarsi che la classe SetUpFixture non si trova in uno spazio dei nomi.

In alternativa, è sempre possibile definire una classe statica rigorosamente allo scopo di definire variabili di test "globali".

+1

che è esattamente quello che stavo cercando, grazie :) –

+3

Secondo i documenti [NUnit] (http://www.nunit.org/index.php? p = setupFixture & r = 2.5.5): "Un SetUpFixture al di fuori di qualsiasi spazio dei nomi fornisce SetUp e TearDown per l'intero assembly." Quindi, se hai bisogno di SetUp e TearDown per tutti i test, assicurati solo che la classe SetUpFixture non si trovi in ​​uno spazio dei nomi. –

+1

Questi sono i documenti aggiornati per l'attributo SetupFixture per NUnit 3+: https://github.com/nunit/docs/wiki/SetUpFixture-Attribute Il grande cambiamento è che devi usare gli attributi [OneTimeSetup] e [OneTimeTearDown] su i metodi attuali, anziché solo [SetUp] e [TearDown]. –

33

Creare una classe (io chiamo il mio Config) e decorarla con l'attributo [SetUpFixture]. I metodi [SetUp] e [TearDown] nella classe verranno eseguiti una volta.

[SetUpFixture] 
public class Config 
{ 
    [SetUp] // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html 
    public void SetUp() 
    { 
    } 

    [TearDown] 
    public void TearDown() 
    { 
    } 
} 
+4

NUnit v3 modifica leggermente gli attributi. vedi [v3 docs] (https://github.com/nunit/nunit/wiki/SetUpFixture-Attribute) –

9

NUnit 3:

[SetUpFixture] 
public class TestLogging 
{ 
    [OneTimeSetUpAttribute] 
    public void Setup() 
    { 
     DoStuff(); 
    } 
} 
+3

Il nome può anche essere semplificato in '[OneTimeSetUp]'. – SharpC