Home / Class/ ConditionalOnClassTests Class — spring-boot Architecture

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 {

	}

}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free