SONARQUE只能显示Java测试的一些测试覆盖率
我的java应用现在有45%的代码覆盖率。我一直在添加新的测试,它们被我的应用程序(通过mvn测试和Intellij显示覆盖率)和Sonarqube扫描 这是我的测试文件:SONARQUE只能显示Java测试的一些测试覆盖率,java,spring,unit-testing,sonarqube,Java,Spring,Unit Testing,Sonarqube,我的java应用现在有45%的代码覆盖率。我一直在添加新的测试,它们被我的应用程序(通过mvn测试和Intellij显示覆盖率)和Sonarqube扫描 这是我的测试文件: public class BadRequestAlertExceptionTest { BadRequestAlertException baExc = new BadRequestAlertException("testDefaultMessage","testEntityName&
public class BadRequestAlertExceptionTest {
BadRequestAlertException baExc = new BadRequestAlertException("testDefaultMessage","testEntityName");
@Test
public void getEntityName() {
assertEquals("testEntityName", baExc.getEntityName());
}
}
我正在尝试将代码覆盖率添加到以下文件:
public class BadRequestAlertException extends AbstractThrowableProblem {
private static final long serialVersionUID = 1L;
private final String entityName;
public BadRequestAlertException(String defaultMessage, String entityName) {
this(ErrorConstants.DEFAULT_TYPE, defaultMessage, entityName);
}
public BadRequestAlertException(URI type, String defaultMessage, String entityName) {
super(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName));
this.entityName = entityName;
}
public String getEntityName() {
return entityName;
}
private static Map<String, Object> getAlertParameters(String entityName) {
Map<String, Object> parameters = new HashMap<>();
parameters.put("message", "error.");
parameters.put("params", entityName);
return parameters;
}
}
公共类BadRequestAlertException扩展了AbstractThrowableProblem{
私有静态最终长serialVersionUID=1L;
私有最终字符串entityName;
public BadRequestAlertException(字符串defaultMessage、字符串entityName){
这(ErrorConstants.DEFAULT_类型、defaultMessage、entityName);
}
public BadRequestAlertException(URI类型、字符串defaultMessage、字符串entityName){
super(type,defaultMessage,Status.BAD_请求,null,null,null,getAlertParameters(entityName));
this.entityName=entityName;
}
公共字符串getEntityName(){
返回entityName;
}
私有静态映射getAlertParameters(字符串entityName){
映射参数=新的HashMap();
参数put(“消息”、“错误”);
parameters.put(“params”,entityName);
返回参数;
}
}
在本地我可以看到该文件的代码覆盖率为100%,但在Sonarqube上显示为0%。有人知道为什么吗?我知道Sonarqube设置正确,因为它已经将我的其他文件的覆盖率提高了%
我使用的测试工具是JUnit
我的测试可能不对,所以Sonarqube不接受它为100%,而我的“mvn测试”和我的IDE接受它为100%
我看了一下,但这个问题更多的是关于Sonarqube是否显示了0%的覆盖率(我的显示了一些覆盖率)
根据我最近的经验,很可能您没有导入正确的测试包。让Java开发更容易的两件事对您不利
- 首先,当您使用'@Test'注释类时,IDE通常会自动建议导入。但是,“Test”是一个公共名称空间/类名,因此自动建议可能是针对本地类,而不是org.junit.Test
- 其次,Java编辑器可以完全折叠导入部分,从而更难抓住这个问题
- 首先,当您使用'@Test'注释类时,IDE通常会自动建议导入。但是,“Test”是一个公共名称空间/类名,因此自动建议可能是针对本地类,而不是org.junit.Test
- 其次,Java编辑器可以完全折叠导入部分,从而更难抓住这个问题