2010-07-06 5 views
39

¿Dónde debería colocar el código que debería ejecutarse solo una vez (y no una vez por clase)? Un ejemplo de esto sería una declaración que inicializa la cadena de conexión DB. Y solo necesito ejecutarlo una vez y no quiero colocar un nuevo método dentro de cada clase "TestFixture" solo para hacer eso.Inicialización de One Time para Nunit

Respuesta

46

El atributo [SetUpFixture] le permite ejecutar el código de configuración y/o desmontaje una vez para todas las pruebas bajo el mismo espacio de nombres.

Here son los documentos en SetUpFixture. De acuerdo con los documentos:

A SetUpFixture fuera de cualquier espacio de nombres proporciona montaje y desmontaje para todo el conjunto.

Así que si necesitas SetUpTearDown y para todas las pruebas, a continuación, sólo asegúrese de que la clase SetUpFixture no se encuentra en un espacio de nombres.

Alternativamente, siempre se puede definir una clase estática estrictamente con el fin de definir las variables de prueba "globales".

+1

que es exactamente lo que estaba buscando, gracias :) –

+3

De acuerdo con los documentos [NUnit] (http://www.nunit.org/index.php? p = setupFixture & r = 2.5.5): "Un SetUpFixture fuera de cualquier espacio de nombres proporciona SetUp y TearDown para todo el ensamblaje". Entonces, si necesita SetUp y TearDown para todas las pruebas, solo asegúrese de que la clase SetUpFixture no esté en un espacio de nombres. –

+1

Estos son los documentos actualizados para el atributo SetupFixture para NUnit 3+: https://github.com/nunit/docs/wiki/SetUpFixture-Attribute El gran cambio es que debe usar los atributos [OneTimeSetup] y [OneTimeTearDown] en los métodos reales, en lugar de simplemente [SetUp] y [TearDown]. –

33

Crea una clase (yo llamo la configuración de mina) y decorarla con el atributo [SetUpFixture]. Los métodos [SetUp] y [TearDown] en la clase se ejecutarán una vez.

[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 cambia ligeramente los atributos. vea [v3 docs] (https://github.com/nunit/nunit/wiki/SetUpFixture-Attribute) –

9

NUnit 3:

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

El nombre también se puede simplificar a '[OneTimeSetUp]'. – SharpC