Comment puis-je importer les classes de configuration dans un @DataJpaTest dans un SpringBootTest?
J'ai un SpringBoot Application et j'ai un package de configuration avec
@Configuration
@EnableJpaAuditing
public class PersistenceConfig {
}
Mais la PersistenceConfig ne pas obtenir ramassé dans un PersonRepositoryTest
@RunWith( SpringRunner.class )
@DataJpaTest
public class PersonRepositoryTest {
//Tests ...
}
Cependant, si je change de @DataJpaTest to @SpringBootTest
, PersonRepositoryTest sera ramasser le fichier config.
Mon structure du package est
- main
- java
- config
PersistenceConfig.java
- domain
Person.java
- persistence
PersonRepository.java
Application.java //@SpringBootApplication
- test
- java
- persistence
PersonRepositoryTest.java
La Test des améliorations au Printemps de Démarrage 1.4 suggèrent de tester la couche de persistance avec @DataJpaTest
Observation:
Faire les deux annotations sur la classe de Test encore de ne pas importer la config
@SpringBootTest
@DataJpaTest
Question 1:
Lors des tests de la Couche de Persistance avec @DataJpaTest
comment puis-je correctement (la meilleure façon de pratiquer au Printemps de Démarrage) importer le package de configuration dans mes Tests?
Question 2:
Peut-il être acceptable, de travail autour de l'utilisation de @SpringBootTest? Je suis conscient que @DataJpaTest est aussi un méta-annotation avec des auto-configuration pour ma base de données, y compris la gestion des transactions. Mais que faire Si je n'ai pas besoin?
Vous devez vous connecter pour publier un commentaire.
Une solution est d'utiliser
@Import
pour importer votre configuration pour la configuration@DataJpaTest
. Ceci est ma compréhension de@Import
.avec
AuditConfiguration
qui permet l'auditVous pouvez essayer ceci:
annoter
PersistenceConfig
avec@ComponentScan
pour activer le composant de balayage au Printemps.Sans configuration supplémentaire,
@ComponentScan
par défaut pour la numérisation du même package que laPersistenceConfig
classe.Et ajouter le
@Context-Configuration
annotation pour lui dire de charger sa configuration à partir du PersistenceConfig.class.Après @georges van post, j'ai découvert que TOUTES les classes de configuration de obtenir aussi ramassé par le simple ajout d'une ligne dans le test:
Si quelqu'un ne veut UNE configuration spécifique de la classe que vous pouvez faire:
Ou plusieurs classes avec:
@ContextConfiguration(classes={MyConfig1.class, MyConfig2.class})
DataJpaTest
est une tranche de la numérisation de toutes les configurations peuvent introduire inattendu dépendances nécessaires s'il Permet à@Enablething
avec la configuration. C'est pourquoi vous devez éviter de mettre@Enable
sur votre classe d'application ou de lancer une grosse configuration.