2017-10-03 2 views
0

Ich möchte Spring Data JPA in einem neuen Projekt verwenden. Ich habe grundsätzlich die in https://spring.io/guides/gs/accessing-data-jpa/ beschriebene Konfiguration verfolgt.MBean kann nicht registriert werden [HikariDataSource (testdb)]

Alles funktioniert gut, wenn ich die Anwendung starte oder wenn ich einen einzelnen Test starte.

Sobald ich beginne zwei Tests zusammen, Frühling kann die Application im zweiten Test nicht geladen werden, da es mit fehlschlägt:

java.lang.IllegalStateException: Failed to load ApplicationContext 
Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (testdb)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource 

Wie kann ich den zweiten Versuch vermeiden, dass die HikariDataSource zu registrieren?

Das ist meine build.gradle

dependencies { 
    compileOnly "org.projectlombok:lombok:1.16.12" 

    compile "org.springframework.boot:spring-boot-starter-web" 
    compile "org.springframework.boot:spring-boot-starter-data-jpa" 

    compile "com.h2database:h2" 

    compile "org.apache.commons:commons-lang3:3.6" 

    testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0" 
    testCompile "org.junit.jupiter:junit-jupiter-params:5.0.0" 

    testRuntime "org.junit.platform:junit-platform-launcher:1.0.0" 
    testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0" 

    testCompile "org.springframework.boot:spring-boot-starter-test" 
} 

und die erste Testklasse

@SpringJUnitConfig(Application.class) 
class FirstRepositoryTest { 
    @Autowired 
    private FirstRepository firstRepository; 

mit JUnit 4 und @RunWith(SpringJUnit4ClassRunner.class) das Problem dadurch lösen, so dass es 5 durch die Wechselwirkung von JUnit verursacht werden muß und Frühling.

Antwort

0

Sie müssen einmal für alle Tests Frühling Kontext laden, siehe beispielsweise post der @ContextConfiguration verwendet:

dass Problem bei jeder Testklasse den Frühling Kontext geladen wurde. Die -Lösung restrukturierte die Testklassen, indem sie eine AbstractContext-Basisklasse erweiterte, die einen Spring-Kontext für alle zu teilenden Tests und alle darin enthaltenen Beans geladen hat.

+0

Ich habe dies bereits versucht (d. H. Extrahieren einer Basisklasse mit dem Anwendungskontext). Es hilft nicht. – tkr

+0

Auch ist es kein Problem mit Junit 4, wo ich den Anwendungskontext nicht explizit zwischen den Tests teilen. – tkr

Verwandte Themen