Как выполнить модульное тестирование метода main() приложения Spring-Boot с помощью SpringApplication.run() . Мне интересно, возможно ли получить тестовое покрытие Jacoco в этом классе. (Иначе я его исключаю)
Этот вопрос похож, но не совпадает с этим вопросом: Spring Boot, тестовое основное приложение класс
Я использую mockito-core
3.8 и mockito-inline
.
Этот тестовый код работает для меня, но Jacoco не воспринимает его как тестовое покрытие:
@SpringBootTest
@ActiveProfiles("test")
public class AutowireTest {
private static final String ARG = "";
private static final String[] ARGS = new String[]{ARG};
@Autowired
ConfigurableApplicationContext context;
@Test
public void main() {
try (MockedStatic<Application> appStatic = Mockito.mockStatic(Application.class);
MockedStatic<SpringApplication> springStatic = Mockito.mockStatic(
SpringApplication.class)) {
appStatic.when(() -> Application.main(ARGS))
.thenCallRealMethod();
springStatic.when(() -> SpringApplication.run(Application.class, ARGS))
.thenReturn(context);
// when
Application.main(ARGS);
//then
appStatic.verify(times(1),
() -> Application.main(ARGS));
springStatic.verify(times(1),
() -> SpringApplication.run(Application.class, ARGS));
}
}
}
Разве Jacoco не может показать покрытие статических методов?