JaCoCo使用Jackson.map.ObjectMapper创建的对象的0%覆盖率

时间:2015-07-24 17:13:34

标签: java jackson jacoco

我有一个应用了JaCoCo插件的Gradle项目。当我运行我的测试并创建一个jacocoTestReport时,我得到的这个类不匹配错误

[ant:jacocoReport] Classes in bundle 'e-services' do no match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class eservices/model/persistence/Event does not match.

这些课程应该匹配,因为我正在干净 - >构建 - >在当地测试。我怀疑不匹配的原因是我正在使用 jackson.map.ObjectMapper 从JSON创建一个对象,不知怎的,这会导致存储在jacoco的.exec文件中的classId与编译的类id不匹配

我的测试广泛使用了Event类,但由于类不匹配,我仍然得到0%的覆盖率:

import eservices.model.persistence.Event;
event = mapper.readValue(json, Event.class);
event.setTenId(TenIds.getInternalId());

有没有办法从这种情况中获得报道?

1 个答案:

答案 0 :(得分:2)

这是一个JaCoCo已知限制,因为JaCoCo依赖于运行时字节码的校验和,该字节码与用于报告生成的字节码的校验和相匹配。通常情况下,当您有两个库来检测字节码时,例如PowerMock和JaCoCo,或JPA和JaCoCo。

这在以下JaCoCo问题Coverage is missing a class that was in fact tested #193中引用,并标记为'wontfix''已知限制'