Solución:
Por defecto, el @DataJpaTest
utiliza en la base de datos de memoria H2 para pruebas de repositorios. Si necesita usar la base de datos real, puede considerar deshabilitar las configuraciones automáticas o usar @SpringBootTest
donde está habilitada toda la aplicación web mvc.
Para deshabilitar la configuración automática:
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@Transactional
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class IssueRepositoryIntegrationTests
@AutoConfigureTestDatabase
configura la base de datos H2 de prueba para usted. Puede mencionar específicamente que no se menciona arriba o puede excluir esta configuración automática como:
@EnableAutoConfiguration(exclude=AutoConfigureTestDatabase.class)
PD: : Todavía no he probado la exclusión anterior.
Para obtener más información sobre eso, vaya a través de javadoc: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/jdbc/AutoConfigureTestDatabase.html
De @DataJpaTest
documentación:
De forma predeterminada, las pruebas anotadas con @DataJpaTest utilizarán una base de datos incorporada en la memoria (reemplazando cualquier fuente de datos explícita o normalmente configurada automáticamente).
Si va a la documentación, puede ver que esta anotación agrega muchas otras anotaciones.
@Transactional
La anotación se comporta de manera diferente en el contexto de prueba que en el contexto de la aplicación:
De la documentación de primavera:
Anotar un método de prueba con @Transactional hace que la prueba se ejecute dentro de una transacción que, de forma predeterminada, se revierte automáticamente después de completar la prueba.
Creo que proporcioné suficiente información para responder a su pregunta, además, puede echar un vistazo a los siguientes artículos:
Configuración de fuente de datos Spring separada para pruebas
Pruebas con perfiles y clases de configuración de @Configuration Classes and Profiles