Soy la creación de Pruebas unitarias en Java y para cada método, puedo crear las mismas listas, variables, etc. Por otro lado, por supuesto, pensé que podría crear todas estas variables como globales y establecer sus valores en la setup()
método (en @Before
), pero no estoy seguro de si los valores pueden ser cambiados cuando se ejecuta pruebas, debido a los múltiples hilos, etc. Así que, ¿cuál es la mejor manera para que esta situación?
Nada de que preocuparse. JUnit creará una nueva instancia de la clase de prueba y, a continuación, ejecute cada @Before
método, y sólo a continuación, ejecute el @Test
el método, y que hace que la canción y la danza de rutina a todos otra vez por cada @Test
anotado método en la clase. Estás usando @Before
exactamente como se había previsto: Es para almacenar el código de inicialización que se requiere para todas las pruebas en que clase de prueba.
JUnit lo hace de esta manera porque a la prueba de independencia " es bueno tener: Pruebas, preferentemente, fallar o pasar independiente del orden en que se ejecuta.
Cada tan a menudo el proceso init es tan caro, que no vale la pena pagar el "costo" de correr una y otra vez para cada prueba. La anotación @BeforeClass
existe específicamente para ese propósito. El javadoc de @BeforeClass
incluso explica que esto afecta a la prueba de la independencia y por lo tanto debe ser utilizado solamente si el programa de instalación de trabajo que hacer dentro de un método de este tipo es lo suficientemente caro (de cómputo o de otra manera) a hacer esa compensación.
En otras palabras:
Sus preocupaciones acerca de la prueba de independencia son reales, pero se aplican a @BeforeClass
. @Before
no sufren de este problema; que el código se vuelve a ejecutar para cada prueba.
NOTA: Usted puede tirar todo esto por la ventana si usted tiene static
cosas. No tiene estática de la materia en el código de la prueba a menos que realmente sepas lo que estás haciendo. Yo asumo que usted no tiene que en el que caso de continuar, sus pruebas son independientes.
@BeforeClass
y @Before
. Cualquier aclaración pls? @Before
se ejecuta antes de cada prueba. Todos los métodos con @BeforeClass
se ejecuta sólo una vez, antes de cualquier prueba. En general, se establece static
cosas con @BeforeClass
que se vuelve a usar (por lo tanto, las pruebas no son independientes). Se establece la no-estático cosas con @Before
y por lo tanto las pruebas son independientes. Acabo de leer la documentación de estas anotaciones. @BeforeClass
(JUnit 5: @BeforeAll
) se ejecuta una vez para toda clase de prueba, @Before
(JUnit 5: @BeforeEach
) se ejecuta antes de cada método de prueba. @BeforeEach
vs @BeforeAll
además de sus explicaciones. Sin embargo, no estoy seguro de si debo o no limpiar las listas que son utilizados por varias pruebas. I ay necesidad de claro en @AfterEach
. Alguna idea? @Before
e imprimir algunas cosas - sin quitar nada. Luego, simplemente observar lo que sucede. @AfterEach
. Así que, ¿cuál es el enfoque adecuado para esta situación?. Alguna idea? @Before
. No tengo idea de lo que podría posiblemente ser confuso en este punto. La respuesta se explica en detalle!