Spring JUnit Test未加载完整的应用程序上下文
嗨,我正在尝试Springjunit测试用例…,我需要加载完整的应用程序上下文。但是,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测试用例的applicationcontext中。但是从启动的bean的输出来看,它似乎没有这样做。
回答:
您需要按以下方式注释测试类@ActiveProfiles
;否则,您的Application
配置类将始终被 禁用
。因此,您当前看不到中列出了任何自己的bean ApplicationContext
。
@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles(Constants.SPRING_PROFILE_DEVELOPMENT)
public class MongoDbRepositoryTest { /* ... */ }
此外,Application
应使用@Configuration
别人提到的注释。
以上是 Spring JUnit Test未加载完整的应用程序上下文 的全部内容, 来源链接: utcz.com/qa/421449.html