Tengo un conjunto de pruebas JUnit 4 con métodos BeforeClass y AfterClass que realizan una configuración/desmontaje para las siguientes clases de prueba. Lo que necesito es ejecutar las clases de prueba también por ellos mismos, pero para eso necesito un escenario de configuración/desmontaje (BeforeClass y AfterClass o algo así) para cada clase de prueba. El problema es que cuando ejecuto el paquete no quiero ejecutar la configuración/desmontaje antes y después de cada clase de prueba, solo quiero ejecutar la configuración/desmontaje del banco de pruebas (una vez). ¿Es posible? Gracias por adelantado.Conjunto de pruebas Junit 4 y clases de prueba individuales
Respuesta
No conozco ninguna forma estándar de hacer esto con JUnit. La razón para ello, como probablemente ya sepa, es que sus casos de prueba deben ejecutarse independientemente el uno del otro. Esto se refiere a los métodos de instalación/desmontaje "normales" que se ejecutan antes y después de cada método de prueba. Sin embargo, la configuración y desmontaje de la clase es un poco diferente, aunque preferiría ejecutar mis pruebas de forma independiente y permanecer fuera de la zona problemática.
Sin embargo, si realmente está convencido de lo que está haciendo, podría usar un indicador global para indicar si se debe ejecutar o no la configuración de la clase y verificar su estado en los métodos de configuración/desmontaje de la clase . En su conjunto de pruebas, podría incluir una clase especial como la primera, que no hace más que ejecutar la configuración y establecer el indicador global para indicar a los casos de prueba reales que sus métodos de instalación/desmontaje de clase no se deben ejecutar. Del mismo modo, una última clase especial en el conjunto puede ejecutar el código de desmontaje. La advertencia es que me temo que JUnit no garantiza el orden de ejecución de las clases de prueba dentro de un conjunto, aunque lo más probable es que las ejecute en el orden especificado, pero esto es solo un detalle de implementación. Pruébelo, puede funcionar para usted, pero no hay garantía de que siempre hará lo que espera.
Si tiene jUnit 4.7+, le recomiendo examinar la nueva característica llamada Rules (que se explica en this blog post). Puede que no sean exactamente lo que quieres, pero probablemente sean lo mejor que obtienes con jUnit.
Supuestamente, TestNG tiene mejores posibilidades de prueba de agrupación, pero realmente aún no lo he investigado.
No, no hay una forma estándar de hacer esto en JUnit, aunque podría piratear algo como sugirió Péter Török.
Sin embargo, tenga en cuenta que usted está abusando más o menos de JUnit al hacer esto. El punto entero de la unidad lo prueba que son independientes uno del otro. Esto se debe a que las dependencias entre las pruebas crean una pesadilla de mantenimiento total (las pruebas fallan porque la ejecución está en el orden incorrecto).
Así que te aconsejo que considerar seriamente si no es mejor simplemente siempre ejecutar la instalación ...
Gracias, id lo consideró pero la configuración tiene una duración mucho más larga que la prueba de agujeros con todas las clases de prueba :) – Hypnus
Siento tu dolor :-(. Si en realidad tuviera que hacer esto también, para las pruebas con configuración complicada (aunque fue solo por clase). Es probable que algún tipo de bandera "Ya estoy inicializado" sea tu mejor opción. – sleske
- 1. Ejecutar todas las pruebas en Junit 4
- 2. Excluir métodos de prueba JUnit individuales sin modificar la clase de prueba?
- 3. Suites paramétricas en Junit 4?
- 4. Agrupando pruebas de JUnit
- 5. JUnit agregar pruebas adicionales al caso de prueba
- 6. JUnit 4: Configurar las cosas en un banco de pruebas antes de las pruebas se ejecutan (como método @BeforeClass de una prueba, sólo por un conjunto de pruebas)
- 7. Ignorar pruebas junit a través de @ExcludeCategory dentro de un conjunto de pruebas
- 8. Netbeans y crear pruebas JUnit
- 9. Separación de clases JUnit en un paquete de prueba especial?
- 10. Las clases de prueba JUnit no se muestran en JMeter
- 11. Pruebas unitarias de JUnit y Clojure
- 12. Gestión de datos de prueba para pruebas Junit
- 13. ¿Cómo escribir el conjunto de pruebas de primavera de múltiples pruebas y ejecutar pruebas selectivas?
- 14. Javadoc en las clases de prueba de Junit?
- 15. JUnit pruebas opcionales/requeridos
- 16. TestSuite Setup en jUnit 4
- 17. ¿Cómo se implementa la semántica @BeforeClass en una prueba JUnit 4 escrita en scala?
- 18. Prueba de excepciones múltiples con anotaciones JUnit 4
- 19. Pruebas unitarias en QTestLib - ejecución de pruebas individuales/pruebas en clase/todas las pruebas
- 20. Ejecutando cada prueba JUnit en una JVM separada en Eclipse?
- 21. Pruebas de JUnit para POJOs
- 22. Maven 2 No se ejecuta Junit 4 Pruebas
- 23. Eliminación de pruebas de JUnit testsuite redundantes
- 24. @parameters en Junit 4
- 25. Mejor o personalizado JUnit prueba de filtrado
- 26. Ejecutando pruebas junit en paralelo en una compilación Maven?
- 27. ¿Cómo uso JUnitPerf con JWebUnit y JUnit 4?
- 28. Directorio de datos de prueba con jUnit
- 29. Prueba de unidad Clases estáticas
- 30. Prueba de integración y prueba unitaria (WEB API mvc 4)
Gracias por la respuesta, de hecho me había ocurrido, pero pensé que tal vez había una solución mejor. La razón de Lo que quiero hacer es porque la configuración limpia el entorno y restablece la base de datos, por lo que toma algo de tiempo y es por eso que no quiero ejecutar la configuración para cada clase de prueba, pero necesito hacerlo cuando ejecuto un prueba individual. – Hypnus