我有一个 spring-boot
应用程序,其中我的 @SpringBootApplication
入门课程看起来像一个标准课程。因此,我为我的所有功能创建了许多测试,并将摘要发送到 sonarqube 以查看我的覆盖范围。
对于我的初学者课程,Sonarqube 告诉我,我只有 60% 的覆盖率。所以平均覆盖率不如预期。
我的测试类只是默认类。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ElectronicGiftcardServiceApplication.class)
public class ElectronicGiftcardServiceApplicationTests {
@Test
public void contextLoads() {
}
}
那么如何在我的应用程序的起始类中测试我的主类呢?
原文由 Patrick 发布,翻译遵循 CC BY-SA 4.0 许可协议
所有这些答案似乎都是多余的。
您不会为了让度量工具满意而添加测试。
加载应用程序的 Spring 上下文 需要时间。不要为了在您的应用程序中赢得大约 0.1% 的覆盖率而在每个开发人员构建中添加它。
在这里 ,您不仅仅涵盖来自 1 个公共方法的 1 个语句。在 通常编写数千条语句 的应用程序中,它不代表任何内容。
第一个解决方法:使您的 Spring Boot 应用程序类内部没有声明 bean。如果您有它们,请将它们移动到配置类中(以使它们仍然被单元测试覆盖)。然后在 测试覆盖配置中忽略你的 Spring Boot 应用程序类。
第二种解决方法:如果您确实需要涵盖
main()
调用(例如出于组织原因),请为其创建一个测试,而是一个集成测试(由持续集成工具执行,而不是在每个开发人员构建中执行)并清楚地记录测试类的目的: