que tienen un proyecto que estoy construyendo con Maven que utiliza Hibernate (y primavera) para recuperar datos de una base de datos, etc.¿Mejores prácticas para las pruebas de integración con Maven?
Mis "pruebas" para los DAOs en mi proyecto se extienden primavera de AbstractTransactionalDataSourceSpringContextTests
de modo que una fuente de datos puede ser conectado a mi clase bajo prueba para poder ejecutar realmente la consulta/Hibernar la lógica, para buscar datos, etc.
En varios otros proyectos he usado estos tipos de pruebas en concierto con una base de datos HSQL (en -memory o apuntado a un archivo) para poder probar eficientemente la lógica de consulta de la base de datos real sin depender de una base de datos externa. Esto funciona muy bien, ya que evita cualquier dependencia externa y el "estado" de la base de datos antes de ejecutar las pruebas (cada una de las cuales está envuelta en una transacción que se retrotrae) está bien definida.
Tengo curiosidad acerca de la mejor manera de organizar estas pruebas, que son realmente un sabor flojo de pruebas de integración, con Maven. Se siente un poco sucio mantener estas pruebas en src/test/java
, pero por lo que he leído, no parece haber una estrategia o práctica consistente para organizar pruebas de integración con Maven.
Por lo que he leído hasta ahora, parece que puedo usar el Failsafe plugin (o una segunda instancia de Surefire) y vincularlo a la fase integration-test
, y que también puedo vincular la lógica personalizada de inicio o apagado (como para iniciar/detener la instancia de HSQL) a pre-integration-test
o post-integration-test
. Pero, ¿este es realmente el mejor método?
Así que mi pregunta básicamente es: ¿cuál es la mejor práctica generalmente aceptada para organizar esto con Maven? Tengo problemas para encontrar cualquier tipo de respuesta consistente en la documentación.
Lo que me gustaría es:
- pruebas de unidad separada de las pruebas de integración, pruebas de unidad por lo que sólo se ejecutan durante la fase de
test
- La capacidad de unir la lógica de inicio personalizada/apagado para
pre-integration-test
ypost-integration-test
- que los informes de las pruebas de integración-fusionada/presentadas con la prueba de la unidad de éxito seguro informa
Mover las pruebas de integración en un proyecto separado y mantenga las pruebas unitarias en el mismo proyecto que la fuente. –