2

如何使用 SpringApplication.run() 对 Spring-Boot Application main() 方法进行单元测试。我想知道是否有可能在这个类上获得 Jacoco 测试覆盖率。(否则我会排除它)

这个问题和这个问题类似,但又不一样:Spring Boot, test main application class

我正在使用mockito-core3.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 不能显示静态方法的覆盖范围吗?

4

0 回答 0