unitaria - testing en java
¿JUnit ejecuta casos de prueba secuencialmente? (6)
Con mi experiencia, puedo decir que podemos serializar las pruebas en una clase nombrando el nombre del método que tiene Test in it. ex:
@Test
public ..... firstTest ()
{
}
@Test
public .... thirdTest()
{
}
@Test
public....secondTest()
{
}
El orden es firstTest, thirdTest, secondTest
En esta post , hice una pequeña pregunta como parte de un problema mayor. Como aún no recibí las respuestas, hago mi pregunta aquí:
¿Es razonable suponer que JUnit ejecuta casos de prueba secuencialmente: un caso de prueba termina antes de que comience el próximo. ¿Difiere entre las versiones de JUnit (mi prioridad es JUnit4)? Y si no, ¿hay una forma simple de forzar a JUnit a ejecutar las pruebas secuencialmente?
Gracias
La ejecución en paralelo de pruebas es compatible desde JUnit 4.7. Pero hasta donde yo sé, nunca se realiza de forma automática, específicamente debe configurarlo, por ejemplo, como aquí: http://java.dzone.com/articles/running-junit-tests-parallel
Pero no olvides eso:
Las buenas pruebas automatizadas deben ser independientes, aisladas y reproducibles, lo que los convierte en candidatos ideales para que se ejecuten al mismo tiempo.
No sé por qué lo pregunta, pero si no se cumplen los criterios anteriores, es posible que desee pensar en el diseño de su prueba.
Sí,
Y también piense en el @before
y @after
allí, puede tener un código que restaure el estado para que se ejecute la próxima prueba.
Sí, de manera predeterminada, creo que ejecuta pruebas secuencialmente.
JUnit 4.6 introdujo un ParallelRunner
experimental para ejecutar pruebas en paralelo - No sé de su estado actual. Sin embargo, esperaría que el paralelismo siga siendo una característica de "aceptación" por defecto. (A juzgar por otras respuestas, parece que ahora está aquí para quedarse, pero en una forma ligeramente diferente, y aún así optar por ella).
Sí. Como se mencionó en alguna parte de los comentarios, debe planificar cuidadosamente la configuración y el desmontaje de la plataforma de prueba (todas las superclases afectan esas acciones), así como la configuración y el desmontaje de la estación de pruebas.
Además, en una nota secundaria, por lo que puedo recordar, JUnit no garantiza el orden de ejecución de los testcases (es decir, a menos que estén en un conjunto, supongo). Esto es importante y debe empujarlo a realizar una limpieza muy precisa y restaurar el estado de SUT entre las pruebas, y evitar los casos de prueba que se basan en los resultados de otras pruebas. usted podría decir que esto es una especie de antipatrón :).
Una suposición fuerte y razonable: sí, JUnit tiene un único subproceso por defecto.
De lo contrario, uno no sabría si una prueba falló porque el código está roto o falló debido a problemas de concurrencia si algunas pruebas se ejecutaron en paralelo.