[英]Spring JUnit Test not loading full Application Context
嗨,我正在嘗試使用 spring junit 測試用例...並且我需要加載我的完整應用程序上下文。 但是,junit 測試不會初始化完整的應用程序上下文。
測試類:
@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);
}
}
輸出:
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
主要應用類注釋:
@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 { ...
因此,它應該掃描 com.test 包中的所有 spring bean,並將它們加載到 Junit 測試用例的應用程序上下文中。 但是從 bean 初始化的輸出來看,它似乎並沒有這樣做。
您需要使用@ActiveProfiles
注釋您的測試類,如下所示; 否則,您的Application
配置類將始終被禁用。 這就是為什么您目前在ApplicationContext
中看不到任何您自己的 bean 的原因。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles(Constants.SPRING_PROFILE_DEVELOPMENT)
public class MongoDbRepositoryTest { /* ... */ }
此外, Application
應該像其他人提到的那樣用@Configuration
進行注釋。
您是否可能在Application
類中缺少@Configuration
注釋?
在每個無法擴展的測試類中添加 @ActiveProfile 在 VM 選項中添加它
-Dspring.profiles.active=test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.