ConditionalOnClassTests Class — spring-boot Architecture
Architecture documentation for the ConditionalOnClassTests class in ConditionalOnClassTests.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClassTests.java lines 38–130
class ConditionalOnClassTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
@Test
void testVanillaOnClassCondition() {
this.contextRunner.withUserConfiguration(BasicConfiguration.class, FooConfiguration.class)
.run(this::hasBarBean);
}
@Test
void testMissingOnClassCondition() {
this.contextRunner.withUserConfiguration(MissingConfiguration.class, FooConfiguration.class).run((context) -> {
assertThat(context).doesNotHaveBean("bar");
assertThat(context).hasBean("foo");
assertThat(context.getBean("foo")).isEqualTo("foo");
});
}
@Test
void testOnClassConditionWithXml() {
this.contextRunner.withUserConfiguration(BasicConfiguration.class, XmlConfiguration.class)
.run(this::hasBarBean);
}
@Test
void testOnClassConditionWithCombinedXml() {
this.contextRunner.withUserConfiguration(CombinedXmlConfiguration.class).run(this::hasBarBean);
}
@Test
void onClassConditionOutputShouldNotContainConditionalOnMissingClassInMessage() {
this.contextRunner.withUserConfiguration(BasicConfiguration.class).run((context) -> {
Collection<ConditionEvaluationReport.ConditionAndOutcomes> conditionAndOutcomes = ConditionEvaluationReport
.get(context.getSourceApplicationContext().getBeanFactory())
.getConditionAndOutcomesBySource()
.values();
String message = conditionAndOutcomes.iterator().next().iterator().next().getOutcome().getMessage();
assertThat(message).doesNotContain("@ConditionalOnMissingClass did not find unwanted class");
});
}
private void hasBarBean(AssertableApplicationContext context) {
assertThat(context).hasBean("bar");
assertThat(context.getBean("bar")).isEqualTo("bar");
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ConditionalOnClassTests.class)
static class BasicConfiguration {
@Bean
String bar() {
return "bar";
}
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(name = "FOO")
static class MissingConfiguration {
@Bean
String bar() {
return "bar";
}
}
@Configuration(proxyBeanMethods = false)
static class FooConfiguration {
@Bean
String foo() {
return "foo";
}
}
@Configuration(proxyBeanMethods = false)
@ImportResource("org/springframework/boot/autoconfigure/condition/foo.xml")
static class XmlConfiguration {
}
@Configuration(proxyBeanMethods = false)
@Import(BasicConfiguration.class)
@ImportResource("org/springframework/boot/autoconfigure/condition/foo.xml")
static class CombinedXmlConfiguration {
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free