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 {
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free