Home / Class/ BannerTests Class — spring-boot Architecture

BannerTests Class — spring-boot Architecture

Architecture documentation for the BannerTests class in BannerTests.java from the spring-boot codebase.

Entity Profile

Source Code

core/spring-boot/src/test/java/org/springframework/boot/BannerTests.java lines 50–139

@ExtendWith({ MockitoExtension.class, OutputCaptureExtension.class })
class BannerTests {

	private @Nullable ConfigurableApplicationContext context;

	@AfterEach
	void cleanUp() {
		if (this.context != null) {
			this.context.close();
		}
	}

	@Captor
	@SuppressWarnings("NullAway.Init")
	private ArgumentCaptor<Class<?>> sourceClassCaptor;

	@Test
	void testDefaultBanner(CapturedOutput output) {
		SpringApplication application = createSpringApplication();
		this.context = application.run();
		assertThat(output).contains(":: Spring Boot ::");
	}

	@Test
	void testDefaultBannerInLog(CapturedOutput output) {
		SpringApplication application = createSpringApplication();
		this.context = application.run();
		assertThat(output).contains(":: Spring Boot ::");
	}

	@Test
	void testCustomBanner(CapturedOutput output) {
		SpringApplication application = createSpringApplication();
		application.setBanner(new DummyBanner());
		this.context = application.run();
		assertThat(output).contains("My Banner");
	}

	@Test
	void testBannerInContext() {
		SpringApplication application = createSpringApplication();
		this.context = application.run();
		assertThat(this.context.containsBean("springBootBanner")).isTrue();
	}

	@Test
	void testCustomBannerInContext() {
		SpringApplication application = createSpringApplication();
		Banner banner = mock(Banner.class);
		application.setBanner(banner);
		this.context = application.run();
		Banner printedBanner = (Banner) this.context.getBean("springBootBanner");
		assertThat(printedBanner).hasFieldOrPropertyWithValue("banner", banner);
		then(banner).should()
			.printBanner(any(Environment.class), this.sourceClassCaptor.capture(), any(PrintStream.class));
		reset(banner);
		printedBanner.printBanner(this.context.getEnvironment(), null, System.out);
		then(banner).should()
			.printBanner(any(Environment.class), eq(this.sourceClassCaptor.getValue()), any(PrintStream.class));
	}

	@Test
	void testDisableBannerInContext() {
		SpringApplication application = createSpringApplication();
		application.setBannerMode(Mode.OFF);
		this.context = application.run();
		assertThat(this.context.containsBean("springBootBanner")).isFalse();
	}

	private SpringApplication createSpringApplication() {
		SpringApplication application = new SpringApplication(Config.class);
		application.setWebApplicationType(WebApplicationType.NONE);
		return application;
	}

	static class DummyBanner implements Banner {

		@Override
		public void printBanner(Environment environment, @Nullable Class<?> sourceClass, PrintStream out) {
			out.println("My Banner");
		}

	}

	@Configuration(proxyBeanMethods = false)
	static class Config {

	}

}

Analyze Your Own Codebase

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

Try Supermodel Free