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



我有一个应用了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());

是否有办法从这种情况中获得覆盖?

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

这是在以下JaCoCo问题中引用的Coverage缺少一个类,这个类实际上是#193测试过的,它被标记为"wontfix"已知限制"

最新更新