0
package com.example.demo;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {

        System.out.println("Hello !");

        // SpringApplication.run(DemoApplication.class, args);

        SpringApplication application = new SpringApplication(DemoApplication.class);
        application.setBannerMode(Banner.Mode.OFF);
        application.run(args);
    }

}

And test

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest(classes = DemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DemoApplicationTests {

    @Test
    void contextLoads() {
    }

}

DemoApplicationTest seems to not use or be aware anythig about DemoApplication (@Spring BootApplication).

And I can't figure out if Maven project has multiple maven modules, how can they be included in test. Seem to me that Spring app does not even care about profiles defined in test.

Please point to relevant example or documentation: how to configure the test, so that it works like Spring Boot service where running on its own.

CommandLineRunner however gets executed also when running from test class:

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    public static void main(String[] args) {

        System.out.println("Hello !");

        // SpringApplication.run(DemoApplication.class, args);

        SpringApplication application = new SpringApplication(DemoApplication.class);
        application.setBannerMode(Banner.Mode.OFF);
        application.run(args);
    }

    @Autowired
    ApplicationContext applicationContext;

    @Override
    public void run(String... args) throws Exception {
        String[] beans = applicationContext.getBeanDefinitionNames();
        Arrays.sort(beans);
        for (String bean : beans) {
            System.out.println(bean);
        }
        System.out.println(".............................");
    }
}

But with Spring-banner .

catch22
  • 165
  • 5
  • 16
  • please try with addition of ActiveProfiles annotations to trigger specific profile configurations.. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/ActiveProfiles.html – Mahesh Biradar Nov 18 '22 at 21:03
  • please check - https://stackoverflow.com/questions/39690094/spring-boot-default-profile-for-integration-tests – Mahesh Biradar Nov 18 '22 at 21:05

1 Answers1

0

First, add @ExtendWith(SpringExtension.class) to your test class. Rest of the example, you can check here :

https://howtodoinjava.com/spring-boot2/testing/spring-boot-2-junit-5/