Как JUnit тестировать приложение Spring-Boot.Ява

извинитесь, поскольку это может показаться бесполезным действием, но есть ли способ, которым мы можем сделать тест junit на Spring-Boot(1.3.8.RELEASE) ' S Application.java, который этот класс не делает ничего, кроме запуска приложения Spring-boot?

приведенный ниже:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

       try{
             SpringApplication.run(Application.class, args);
       }catch(Exception e){
             //code here
       }   
    }
}

может быть, я могу попробовать поймать исключение? но что еще я могу проверить, чтобы JUnit проверил SpringApplication.run()? любой пример приветствуется. Спасибо вам всем!

2 ответов


обычно для проверки запуска контекста приложения достаточно следующего.

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class ApplicationTests {

    @Test
    public void contextLoads() {
    }
}

однако, если вы хотите непосредственно проверить Application.main, вы также можете проверить это так:

public class ApplicationTest {

    @Test
    public void test()
    {
        Application.main(new String[]{
                "--spring.main.web-environment=false",
                "--spring.autoconfigure.exclude=blahblahblah",
                // Override any other environment properties according to your needs
        });
    }
}

может быть, я могу попробовать поймать исключение? но что еще я могу проверить так что JUnit будет тестировать SpringApplication.run()? любой пример оцененный. Спасибо вам всем!

сделать тест неудачным, если исключение поймано, здесь беспомощно, поскольку брошенное исключение во время теста уже, как следствие, сделало тест неудачным (точнее, по ошибке).
Если вы выполняете уже тестовые классы, которые загружают весь контекст загрузки spring (@SpringBootTest) вы не нужно писать тест, чтобы проверить, что она правильно загружена.

вы должны проверить Application класс, если он имеет какую-то логику.
Например, вы можете объявить метод с аннотацией @Before это делает некоторую обработку после загрузки контекста, и вы хотели бы утверждать, что обработка выполняется так, как она должна выполняться. Другой пример : вы можете передать некоторые аргументы в main() способ и вы хотели бы утверждать, что аргументы используются как способ ожидаемый.
Все, что можно проверить с помощью @SpringBootTest.

если Application класс не делает ничего, кроме:

 public static void main(String[] args) {                   
   SpringApplication.run(Application.class, args);         
 }

но вам нужно все же покрыть main() метод тестирования чтобы быть совместимым с каким-либо инструментом покрытия или организацией, создайте интеграционный тест для этого, документируйте его четко и пусть интеграция непрерывная делает это, потому что загрузка приложения Spring Boot занимает время. Вы можете обратиться к этому вопрос.