Wie Importiere ich die Konfiguration von Klassen, die in einer @DataJpaTest in einem SpringBootTest?
Ich habe eine SpringBoot Anwendung und ich eine config-Paket mit
@Configuration
@EnableJpaAuditing
public class PersistenceConfig {
}
Aber die PersistenceConfig nicht abgeholt, die in einem PersonRepositoryTest
@RunWith( SpringRunner.class )
@DataJpaTest
public class PersonRepositoryTest {
//Tests ...
}
Jedoch, wenn ich von @DataJpaTest to @SpringBootTest
, PersonRepositoryTest abholen der config.
Meine package-Struktur ist
- main
- java
- config
PersistenceConfig.java
- domain
Person.java
- persistence
PersonRepository.java
Application.java //@SpringBootApplication
- test
- java
- persistence
PersonRepositoryTest.java
Den Testen von Verbesserungen in Spring-Boot-1.4 schlage vor, testen die Persistenz-Schicht mit @DataJpaTest
Beobachtung:
Dies die beiden Anmerkungen auf die Test-Klasse immer noch nicht importieren, die config
@SpringBootTest
@DataJpaTest
Frage 1:
Bei der Prüfung der Persistenz-Schicht mit @DataJpaTest
wie kann ich richtig ("best Practice" - Weg in Spring Boot) importieren, die config-Paket in meinen Tests?
Frage 2:
Kann es sein, eine akzeptable Arbeit mit @SpringBootTest? Ich bin mir bewusst, dass @DataJpaTest ist auch eine meta-annotation mit vernünftigen auto-Konfiguration für meine Datenbank, einschließlich Transaktions-management. Aber was ist, Wenn ich es nicht brauchen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Lösung ist die Verwendung
@Import
importieren der Konfiguration die Konfiguration erfolgt durch@DataJpaTest
. Dies ist mein Verständnis von@Import
.mit
AuditConfiguration
dass ermöglicht die überwachungKönnen Sie versuchen, diese:
kommentieren
PersistenceConfig
mit@ComponentScan
zu aktivieren-Komponente Scannen im Frühjahr.Ohne weitere Konfiguration
@ComponentScan
wird standardmäßig auf Scannen gleichen Paket wie diePersistenceConfig
Klasse.Und fügen Sie den
@Context-Configuration
Anmerkung zu sagen, es zu laden der Konfiguration aus der PersistenceConfig.class.Nachdem @georges van der post habe ich herausgefunden, dass ALLE Konfigurations-Klassen bekommen auch abgeholt, indem Sie nur eine Zeile im test:
Wenn jemand nur will EINES bestimmten configuration-Klasse Sie tun können:
Oder mehrere Klassen mit:
@ContextConfiguration(classes={MyConfig1.class, MyConfig2.class})
DataJpaTest
ist eine Scheibe Scannen alle Konfigurationen führen können unerwartete benötigten Abhängigkeiten, wenn es Ermöglicht@Enablething
mit der Konfiguration. Dies ist, warum Sie sollten vermeiden Sie@Enable
auf Ihre Bewerbung-Klasse oder rollt Sie zu einer großen Konfiguration.