Spring boot 如何对Spring Boot应用程序main()方法进行单元测试以获得Jacoco测试覆盖率
如何使用SpringApplication.run()对SpringBoot应用程序main()方法进行单元测试。我想知道是否有可能在这门课上获得Jacoco测试覆盖率。(否则我将排除在外) 这个问题与这个问题相似,但不同: 我正在使用Spring boot 如何对Spring Boot应用程序main()方法进行单元测试以获得Jacoco测试覆盖率,spring-boot,unit-testing,mockito,jacoco,springmockito,Spring Boot,Unit Testing,Mockito,Jacoco,Springmockito,如何使用SpringApplication.run()对SpringBoot应用程序main()方法进行单元测试。我想知道是否有可能在这门课上获得Jacoco测试覆盖率。(否则我将排除在外) 这个问题与这个问题相似,但不同: 我正在使用mockitocore3.8和mockitoinline 此测试代码对我有效,但Jacoco不会将其作为测试覆盖率: @SpringBootTest @ActiveProfiles("test") public class AutowireTe
mockitocore
3.8和mockitoinline
此测试代码对我有效,但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));
}
}
}
@SpringBootTest
@ActiveProfiles(“测试”)
公共类自动连线测试{
私有静态最终字符串ARG=“”;
私有静态最终字符串[]ARGS=新字符串[]{ARG};
@自动连线
可配置的应用程序上下文上下文;
@试验
公共图书馆{
try(MockedStatic-appStatic=Mockito.mockStatic(Application.class));
MockedStatic springStatic=Mockito.mockStatic(
SpringApplication.class){
appStatic.when(()->Application.main(ARGS))
.thenCallRealMethod();
springStatic.when(()->SpringApplication.run(Application.class,ARGS))
.然后返回(上下文);
//什么时候
Application.main(ARGS);
//然后
应用静态验证(次数(1),
()->Application.main(ARGS));
弹簧静态。验证(次数(1),
()->SpringApplication.run(Application.class,ARGS));
}
}
}
Jacoco是否无法显示静态方法的覆盖范围?这是否回答了您的问题?不,没有回答,但它确实提供了一个可能是我可以使用的解决方法的答案,通过使用生成的Lombok注释排除代码扫描。我还对如何使用Mockito实现这一点感兴趣(不是Lombok,不必启动服务器),我不明白。我问题中的上述示例已经将Mockito与Mockito.mockStatic一起使用