Shi*_*nha 9 java junit spring spring-test spring-boot
嗨,我正在尝试春季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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
主要应用类注释:
@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 { ...
Run Code Online (Sandbox Code Playgroud)
因此,它应该扫描com.test包中的所有spring bean,并将它们加载到Junit测试用例的applicationcontext中.但是从bean的产量来看,似乎并没有这样做.
您需要使用以下方法注释您的测试类@ActiveProfiles; 否则,Application将始终禁用您的配置类.这就是为什么你目前没有看到你自己的豆类列出的原因ApplicationContext.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles(Constants.SPRING_PROFILE_DEVELOPMENT)
public class MongoDbRepositoryTest { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
另外,Application应该@Configuration像其他人提到的那样注释.
| 归档时间: |
|
| 查看次数: |
13487 次 |
| 最近记录: |