para examples example descargar java junit

java - examples - junit mockito



Diferencia entre setUp() y setUpBeforeClass() (4)

Desde el Javadoc :

A veces, varias pruebas necesitan compartir una instalació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. @BeforeClass método public static void no-arg con @BeforeClass hace que se ejecute una vez antes de cualquiera de los métodos de prueba en la clase. Los métodos de superclases @BeforeClass se ejecutarán antes que los de la clase actual.

Cuando se prueban unidades con JUnit, hay 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 métodos anotados @BeforeClass y @AfterClass se ejecutarán exactamente una vez durante la ejecución de prueba, al principio y al final de la prueba como un todo, antes de ejecutar cualquier otra cosa. De hecho, se ejecutan incluso antes de que la clase de prueba esté construida, razón por la cual deben declararse static .

Los métodos @Before y @Before 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.

Asumamos que tuvo tres pruebas en su clase, el orden de las llamadas a los 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()


Piense en "BeforeClass" como un inicializador estático para su caso de prueba, úselo para inicializar datos estáticos, cosas que no cambian en sus casos de prueba. Definitivamente, debe 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 realizado 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 unidad de prueba. Normalmente utilizo estos métodos para inicializar / reiniciar las simulaciones de mis dependencias. Obviamente, esta inicialización no es específica para una prueba unitaria, sino general para todas las pruebas unitarias.


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

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

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

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