Каково использование метода contextLoads в тестовых примерах Spring Boot Junit?

Этот метод пуст во всех моих тестовых примерах JUnit. В чем польза этого метода?

Sonarqube жалуется
: «Добавьте вложенный комментарий, объясняющий, почему этот метод пуст, создайте исключение UnsupportedOperationException или завершите реализацию».

Я могу обойти это, добавив комментарий, но я просто хочу знать, почему это необходимо.


person Thiagarajan Ramanathan    schedule 17.04.2018    source источник
comment
Это просто заполнитель, так что существует какой-то метод тестирования. Тест заключается в том, что запуск не выдает исключение.   -  person chrylis -cautiouslyoptimistic-    schedule 18.04.2018
comment
проверьте здесь. Возможно дубликат. stackoverflow.com/questions/49345526/   -  person WesternGun    schedule 05.07.2018
comment
Отвечает ли это на ваш вопрос? Должен ли я тестировать метод main() приложения Spring Boot и как?   -  person dbaltor    schedule 05.06.2020


Ответы (2)


Когда вы создаете загрузочное приложение Spring с помощью Spring Initializer. Он автоматически создает для вас тестовый класс с пустым методом contextLoads.

@SpringBootTest
class ApplicationContextTest {

  @Test
  void contextLoads() {
  }
}

Обратите внимание на использование аннотации @SpringBootTest, которая сообщает Spring Boot искать основной класс конфигурации (например, с @SpringBootApplication) и использовать его для запуска контекста приложения Spring. Пустой contextLoads() — это тест для проверки того, может ли приложение успешно загрузить контекст Spring или нет.

Если sonarqube жалуется на пустой метод, вы можете сделать что-то вроде этого, чтобы проверить свой контекст контроллера или сервисного компонента: -

@SpringBootTest
public class ApplicationContextTest {

    @Autowired
    private MyController myController;

    @Autowired
    private MyService myService;

    @Test
    public void contextLoads() throws Exception {
        assertThat(myController).isNotNull();
        assertThat(myService).isNotNull();
    }
}
person Ashish Lahoti    schedule 10.05.2021

Используйте другой бегун,

если вы используете SpringRunner.class, используйте альтернативный вариант, например MockitoJUnitRunner.class или MockitoJunitRunner.class, а не SpringRunner.class

@Runwith(SpringRunner.class)
 @Runwith(JUnit4ClassRunner.class)
 @Runwith(MockitoJUnit4Runner.class)
 @Runwith(MockitoJUnitRunner.class)
person ozinal    schedule 31.01.2019