我们已经开发了许多“内部”Spring Boot启动器和自动配置,支持各种NFR,如日志、配置、安全等。
我们面临的最大测试挑战是如何测试@ConditionalOnClass自动配置的不同组合。
例如:
@Configuration
@ConditionalOnClass(Foo.class)
public class Config1 {
}
@Configuration
@ConditionalOnClass(Bar.class)
public class Config2 {
}
@Configuration
@ConditionalOnMissingClass(Foo.class)
public class Config3 {
} 我们如何操作测试项目的类路径来测试classapth上存在的Foo和Bar jar文件的各种组合?外面有没有什么库?我想知道Spring是如何做到这一点的?
发布于 2020-01-17 05:26:14
我想你要找的是ApplicationContextRunner。
@Test
public void whenDependentClassIsNotPresent_thenBeanMissing() {
new ApplicationContextRunner().withUserConfiguration(ConditionalOnClassConfiguration.class)
.withClassLoader(new FilteredClassLoader(DependentClass.class))
.run(context -> assertThat(context).doesNotHaveBean(BeanConditionalOnDependentClass.class));
}https://stackoverflow.com/questions/43609236
复制相似问题