J'ai une application SpringBoot et un package de configuration avec
@Configuration
@EnableJpaAuditing
public class PersistenceConfig {
}
Mais le PersistenceConfig n'est pas pris en compte dans un PersonRepositoryTest
@RunWith( SpringRunner.class )
@DataJpaTest
public class PersonRepositoryTest {
// Tests ...
}
Cependant, si je change de @DataJpaTest to @SpringBootTest
, PersonRepositoryTest récupérera la configuration.
Ma structure de package est
- main
- Java
- config
PersistenceConfig.Java
- domain
Person.Java
- persistence
PersonRepository.Java
Application.Java // @SpringBootApplication
- test
- Java
- persistence
PersonRepositoryTest.Java
Le Test des améliorations dans Spring Boot 1.4 suggère de tester la couche de persistance avec @DataJpaTest.
Observation: Les deux annotations de la classe Test n'importent toujours pas la configuration @ SpringBootTest @ DataJpaTest
Question 1: Lors du test de la couche de persistance avec @DataJpaTest Comment correctement (méthode recommandée dans Spring Boot) importe le package de configuration dans mes tests?
Question 2: Peut-il être une solution acceptable d'utiliser @SpringBootTest? Je suis conscient que @DataJpaTest est également une méta annotation avec une configuration automatique judicieuse pour ma base de données, y compris la gestion des transactions. Mais que faire si je n'en ai pas besoin?
Vous pouvez essayer ceci: Annotate PersistenceConfig
avec @ComponentScan
pour activer l'analyse des composants au printemps.
@Configuration
@EnableJpaAuditing
@ComponentScan(basePackages = "com.yourbasepackage")
public class PersistenceConfig {
}
En l'absence de configuration supplémentaire, @ComponentScan
analysera par défaut le même package que la classe PersistenceConfig
.
Et ajoutez l'annotation @Context-Configuration
pour lui indiquer de charger sa configuration à partir de PersistenceConfig.class.
@RunWith( SpringRunner.class )
@DataJpaTest
@ContextConfiguration(classes=PersistenceConfig.class)
public class PersonRepositoryTest {
// Tests ...
}
Une solution consiste à utiliser @Import
pour importer votre configuration dans la configuration effectuée par @DataJpaTest
. Ceci est ma compréhension de @Import
.
@RunWith(SpringRunner.class)
@DataJpaTest
@Import(AuditConfiguration.class)
public class AuditTest {
}
avec AuditConfiguration
qui permet l'audit
@Configuration
@EnableJpaAuditing
public class AuditConfiguration {
}