Java 未能获得100%的保险
我正在与spring合作,并使用mvn站点检查我的测试覆盖率和应用程序依赖收敛性,我得到[Error]Error您没有100%收敛性Java 未能获得100%的保险,java,spring,maven,maven-cobertura-plugin,maven-enforcer-plugin,Java,Spring,Maven,Maven Cobertura Plugin,Maven Enforcer Plugin,我正在与spring合作,并使用mvn站点检查我的测试覆盖率和应用程序依赖收敛性,我得到[Error]Error您没有100%收敛性 Dependencies used in modules org.slf4j:slf4j-api 1.7.25 com.epam.brest.course:rest-producer:war:1.0-SNAPSHOT \- com.jayway.jsonpath:json-path:jar:2.3.0:test \- (org.slf4j:slf4j-
Dependencies used in modules
org.slf4j:slf4j-api
1.7.25
com.epam.brest.course:rest-producer:war:1.0-SNAPSHOT
\- com.jayway.jsonpath:json-path:jar:2.3.0:test
\- (org.slf4j:slf4j-api:jar:1.7.25:test - omitted for conflict with 1.7.5)
1.7.5
com.epam.brest.course:rest-producer:war:1.0-SNAPSHOT
\- net.sf.dozer:dozer:jar:5.5.1:compile
+- org.slf4j:slf4j-api:jar:1.7.5:compile
\- org.slf4j:jcl-over-slf4j:jar:1.7.5:compile
\- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for duplicate)
我说问题出在模块rest producer中的slf4g版本上
但是我在本模块中看不到我的版本有任何问题,下面就是
休息制作人
<dependency>
<groupId>com.epam.brest.course</groupId>
<artifactId>service</artifactId>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer-spring</artifactId>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.epam.brest.course</groupId>
<artifactId>utility</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
</dependency>
com.epam.brest.course
服务
net.sf.推土机
推土机弹簧
net.sf.推土机
推土机
org.springframework
SpringWebMVC
com.fasterxml.jackson.core
杰克逊数据绑定
javax.servlet
javax.servlet-api
org.apache.logging.log4j
log4japi
org.apache.logging.log4j
log4j型芯
org.apache.logging.log4j
log4jcl
朱尼特
朱尼特
测试
org.hamcrest
汉克雷斯特酒店
测试
com.jayway.jsonpath
json路径
测试
com.epam.brest.course
效用
javax.validation
验证api
org.mockito
莫基托所有
并且我的父模块有这样的版本
UTF-8
1.4.196
4.3.14.1发布
2.10.0
3.0.8.1发布
1.0-快照
3.0.1
2.9.4
1.1.0.1最终版本
1.3
2.3.0
4.12
5.1.3.最终版本
5.5.1
1.9.5
我能得到一些关于它可能是什么的建议吗,这个项目大约有9个模块
我使用的是jsonPath,它有一个依赖项
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
org.slf4j
slf4j api
1.7.25
编译
我正在使用的推土机也有
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
org.slf4j
slf4j简单
${slf4j.version}
测试
版本是不同的,我认为这是问题所在,但我能做些什么来排除其中一个版本或更改其依赖项的版本我认为您得到的错误是由于您的依赖项中有相同工件的两个版本。尝试将
slf4j api
从json路径
依赖项中排除,以强制项目仅依赖于版本1.7.5
:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
com.jayway.jsonpath
json路径
测试
org.slf4j
slf4j api
您也可以在
推土机
依赖项上执行相同的排除。但是,我觉得在这里这样做更安全,因为这是只用于测试的依赖关系。“100%收敛”。你是说保险范围吗?请注意,100%的覆盖率几乎是不可能实现的,或者至少会导致投入时间来实现100%的覆盖率是不值得的,或者只会导致为了提高覆盖率而创建测试,而测试本身在检查代码的正确性方面没有任何实际价值。度量驱动的开发不是正确的工作方式。你应该把缺少一段代码的覆盖作为一种暗示,如果必要的话,你可能想添加更多的测试,这本身不应该是一个目标。@markrottveel我说的是收敛,但是对于测试,我有47%,我实际上测试了所有重要的东西,包括集成和单元测试,所以我想47%是可以的,我仍然认为你的意思是覆盖率,否则我不理解你的意思。收敛到底是什么意思?所以当我运行mvn站点和mvn站点:stage and access index.html时,我会在依赖关系报告中看到—您并没有100%的收敛。因为您的模块有一个依赖项和两个版本,因为它还没有准备好部署