gpt4 book ai didi

java - 如何测试 Spring-boot 应用程序的主类

转载 作者:IT老高 更新时间:2023-10-28 20:53:35 26 4
gpt4 key购买 nike

我有一个 spring-boot 应用程序,其中我的 @SpringBootApplication 入门类看起来像一个标准类。所以我为我的所有功能创建了许多测试并将摘要发送到 sonarqube看看我的报道。

对于我的初学者类(class),Sonarqube 告诉我,我只有 60% 的覆盖率。所以平均覆盖率不如预期。

enter image description here

我的测试类只是默认类。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ElectronicGiftcardServiceApplication.class)
public class ElectronicGiftcardServiceApplicationTests {

@Test
public void contextLoads() {
}
}

那么如何在我的应用程序的起始类中测试我的主类?

最佳答案

所有这些答案似乎都是多余的。
您不会为了让度量工具满意而添加测试。
加载应用程序的 Spring 上下文需要时间。不要为了在您的应用程序中赢得大约 0.1% 的覆盖率而在每个开发人员构建中添加它。
在这里,您不仅仅涵盖 1 个公共(public)方法中的 1 个语句。在一个通常会写上千条语句的应用程序中,它不代表任何覆盖范围。

第一个解决方法:让你的 Spring Boot 应用程序类没有在里面声明 bean。如果您有它们,请将它们移动到配置类中(以使它们仍然被单元测试覆盖)。然后忽略 test coverage configuration. 中的 Spring Boot 应用程序类

第二种解决方法:如果您确实需要覆盖 main() 调用(例如出于组织原因),请为其创建一个测试,但要进行集成测试(由持续集成工具执行,并且不在每个开发人员构建中)并清楚地记录测试类的目的:

import org.junit.Test;

// Test class added ONLY to cover main() invocation not covered by application tests.
public class MyApplicationIT {
@Test
public void main() {
MyApplication.main(new String[] {});
}
}

关于java - 如何测试 Spring-boot 应用程序的主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com