Hallo, ich versuche, Junit-Testfälle zu entfachen ... und ich benötige meinen vollen Anwendungskontext, um geladen zu werden. Der Junit-Test initialisiert jedoch nicht den vollständigen Anwendungskontext.Spring JUnit Test lädt nicht voll Anwendungskontext
Prüfklasse:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class MongoDbRepositoryTest {
@Value("${spring.datasource.url}")
private String databaseUrl;
@Inject
private ApplicationContext appContext;
@Test
public void testCRUD() {
System.out.println("spring.datasource.url:" + databaseUrl);
showBeansIntialised();
assertEquals(1, 1);
}
private void showBeansIntialised() {
System.out.println("BEEEAAANSSSS");
for (String beanName : appContext.getBeanDefinitionNames()) {
System.out.println(beanName);
}
}
Ausgang:
spring.datasource.url:${spring.datasource.url}
BEEEAAANSSSS
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalPersistenceAnnotationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor
Hauptanwendungsklasse Anmerkungen:
@ComponentScan(basePackages = "com.test")
@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class })
@EnableMongoRepositories("com.test.repository.mongodb")
@EnableJpaRepositories("com.test.repository.jpa")
@Profile(Constants.SPRING_PROFILE_DEVELOPMENT)
public class Application { ...
Daher sollte es die ganze Frühling Bohne im Paket com.test scannen und Laden Sie sie auch in den Anwendungskontext für den Junit-Testfall. Aber aus dem Output der initalisierten Bohnen scheint das nicht zu sein.
Zum einen ist Ihre Anwendungsklasse nur für ein Profil aktiv, das Sie nicht für den Test festlegen. – Steve
Danke Steve bemerkt. –