got*_*nne 2 java integration-testing spring-boot
我们开发了许多“内部”Spring Boot Starter 和自动配置,支持各种 NFR,例如日志记录、配置、安全性等。
我们面临的最大测试挑战是如何测试@ConditionalOnClass自动配置的不同组合。
例如:
@Configuration
@ConditionalOnClass(Foo.class)
public class Config1 {
}
@Configuration
@ConditionalOnClass(Bar.class)
public class Config2 {
}
@Configuration
@ConditionalOnMissingClass(Foo.class)
public class Config3 {
}
Run Code Online (Sandbox Code Playgroud)
我们如何操作测试项目的类路径来测试类路径上存在的Foo& jar 文件的各种组合?Bar那里有图书馆吗?我想知道春天的人是如何做到这一点的?
我认为您正在寻找的是 ApplicationContextRunner。
@Test
public void whenDependentClassIsNotPresent_thenBeanMissing() {
new ApplicationContextRunner().withUserConfiguration(ConditionalOnClassConfiguration.class)
.withClassLoader(new FilteredClassLoader(DependentClass.class))
.run(context -> assertThat(context).doesNotHaveBean(BeanConditionalOnDependentClass.class));
}
Run Code Online (Sandbox Code Playgroud)
来源: https: //www.baeldung.com/spring-boot-context-runner
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |