Diferencia entre setUp() y setUpBeforeClass()

3 minutos de lectura

avatar de usuario
sagar varpe

Cuando se realizan pruebas unitarias con JUnit, existen dos métodos similares, setUp() y setUpBeforeClass(). ¿Cuál es la diferencia entre estos métodos? Además, ¿cuál es la diferencia entre tearDown() y tearDownAfterClass()?

Aquí están las firmas:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

los @BeforeClass y @AfterClass los métodos anotados se ejecutarán exactamente una vez durante la ejecución de la prueba, al principio y al final de la prueba en su conjunto, antes de que se ejecute cualquier otra cosa. De hecho, se ejecutan antes de que se construya la clase de prueba, por lo que deben declararse static.

los @Before y @After los métodos se ejecutarán antes y después de cada caso de prueba, por lo que probablemente se ejecutarán varias veces durante una ejecución de prueba.

Entonces, supongamos que tiene tres pruebas en su clase, el orden de las llamadas a métodos sería:

setUpBeforeClass()

  (Test class first instance constructed and the following methods called on it)
    setUp()
    test1()
    tearDown()

  (Test class second instance constructed and the following methods called on it)
    setUp()
    test2()
    tearDown()

  (Test class third instance constructed and the following methods called on it)
    setUp()
    test3()
    tearDown()

tearDownAfterClass()

avatar de usuario
madhurtanwani

Piense en “BeforeClass” como un inicializador estático para su caso de prueba; utilícelo para inicializar datos estáticos, cosas que no cambian en sus casos de prueba. Definitivamente desea tener cuidado con los recursos estáticos que no son seguros para subprocesos.

Finalmente, use el método anotado “AfterClass” para limpiar cualquier configuración que haya hecho en el método anotado “BeforeClass” (a menos que su autodestrucción sea lo suficientemente buena).

“Antes” y “Después” son para la inicialización específica de la prueba unitaria. Normalmente uso estos métodos para inicializar/reinicializar los simulacros de mis dependencias. Obviamente, esta inicialización no es específica de una prueba unitaria, sino general a todas las pruebas unitarias.

  • Por cierto, si comienzas a escribir pruebas unitarias, te recomendaría este bote de mi blog. También tiene sugerencias para otro gran material sobre pruebas unitarias: madhurtanwani.blogspot.com/search/label/mock

    – madhurtanwani

    5 de agosto de 2010 a las 9:37

setUpBeforeClass se ejecuta antes de la ejecución de cualquier método justo después del constructor (ejecutar solo una vez)

setUp se ejecuta antes de la ejecución de cada método

tearDown se ejecuta después de la ejecución de cada método

tearDownAfterClass se ejecuta después de todas las demás ejecuciones de métodos, es el último método que se ejecuta. (ejecutar solo una vez deconstructor)

avatar de usuario
justin rey

De el javadoc:

A veces, varias pruebas deben compartir una configuración computacionalmente costosa (como iniciar sesión en una base de datos). Si bien esto puede comprometer la independencia de las pruebas, a veces es una optimización necesaria. Anotando un public static void método sin argumentos con @BeforeClass hace que se ejecute una vez antes que cualquiera de los métodos de prueba de la clase. los @BeforeClass Los métodos de las superclases se ejecutarán antes que los de la clase actual.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad