作者:mobiledu2502878013 | 来源:互联网 | 2023-01-31 10:39
我使用Jacoco找到的单元测试代码覆盖率ANT但不生成报告,我得到这个错误序列:
[jacoco:report] Loading execution data file C:\JUnit\apache-ant-1.10.1\jacoco.ex
ec
[jacoco:report] Writing bundle 'Test' with 566 classes
[jacoco:report] Classes in bundle 'Test' do no match with execution data. For report generation the same class files must be used as at runtime.
[jacoco:report] Execution data for class com/!!/AccountDetails does not match.
[jacoco:report] Execution data for class com/!!/DataExtractorHelper does not match.
[jacoco:report] Execution data for class com/!!/WelcomeLetter does not match.
[jacoco:report] Execution data for class com/!!/WelcomeLetterABCD does not match.
我已经阅读了这些答案,但似乎没有一个能帮助我解决问题。
jacoco代码覆盖率报告生成器显示错误:“捆绑包“代码覆盖率报告”中的类与执行数据不匹配”
jacoco:要生成报告,必须使用与运行时相同的类文件
我在Eclipse上编译了所有类,并使用ANT构建工具对这些类进行了代码覆盖。由于某些依赖关系,我确实使用了一些外部jar,它们已经在jdk 1.8.0_101上进行了编译,而我正在使用jdk 1.8.0_111(我尝试通过使用jdk 1.8.0_101解决此错误,但我遇到了相同的错误)
已经提到,在Eclipse与Oracle JDK编译中,类ID可能会更改。因此,我还通过在Eclipse上编译一些基本类来检查这种情况,并使用jdk + ANT查找代码覆盖率。在这种情况下它起作用了。代码覆盖率任务中没有编译。.class文件只需要检查其覆盖范围即可。
错误中提到的所有类在测试代码覆盖率之前均已在eclipse上编译。
我尝试使用离线检测工具作为所使用的持久性框架的解决方法,但它仍然给我这些错误。
错误中上面提到的所有类都位于“检测类”文件夹中。$ {dest.dir}
此刻是我的build.xml。
问题:
1.基于jdk 1.8.0_101和jdk 1.8.0_111的编译器生成的字节码是否会有所不同?增量更新可以更改字节码吗?还是区别仅在主要版本更新期间才有意义?
2.即使实施了离线检测后,为什么仍会出现此错误?我会错过代码中的任何声明吗?我试图保持代码的格式类似于jacoco文档中提供的例子在这里。
我还注意到,当两个类包含相同的类路径时,被检测的类数(614)与添加到测试包(566)的类数不同。这有什么影响吗?
Godin..
5
基于jdk 1.8.0_101和jdk 1.8.0_111的编译器生成的字节码是否会有所不同?增量更新可以更改字节码吗?还是区别仅在主要版本更新期间才有意义?
是的-通常,任何不同版本的编译器(无例外)都可以生成不同位的字节码。
即使实施了离线检测后,为什么仍然出现此错误?我会错过代码中的任何声明吗?
该消息本身已经在您所引用的SO问题中得到了完美的解释:显示错误的jacoco代码覆盖率报告生成器:“捆绑包'Code Coverage Report'中的类与执行数据不匹配”
更精确的答案要求您提供一个最小,完整和可验证的示例(/sf/ask/17360801/),但不幸的是,我认为仅摘录build.xml
部分评论不是完整和可验证的示例。除了JDK之外,还不清楚Eclipse在这里还扮演什么角色。顺便说一下,Eclipse具有并使用了自己的Eclipse Java编译器。
我还注意到,当两个类包含相同的类路径时,被检测的类数(614)与添加到测试包(566)的类数不同。这有什么影响吗?
是的-结果是,所检测的内容与为生成报告而分析的内容不同。这也与有关不匹配的消息相关。
1> Godin..:
基于jdk 1.8.0_101和jdk 1.8.0_111的编译器生成的字节码是否会有所不同?增量更新可以更改字节码吗?还是区别仅在主要版本更新期间才有意义?
是的-通常,任何不同版本的编译器(无例外)都可以生成不同位的字节码。
即使实施了离线检测后,为什么仍然出现此错误?我会错过代码中的任何声明吗?
该消息本身已经在您所引用的SO问题中得到了完美的解释:显示错误的jacoco代码覆盖率报告生成器:“捆绑包'Code Coverage Report'中的类与执行数据不匹配”
更精确的答案要求您提供一个最小,完整和可验证的示例(/sf/ask/17360801/),但不幸的是,我认为仅摘录build.xml
部分评论不是完整和可验证的示例。除了JDK之外,还不清楚Eclipse在这里还扮演什么角色。顺便说一下,Eclipse具有并使用了自己的Eclipse Java编译器。
我还注意到,当两个类包含相同的类路径时,被检测的类数(614)与添加到测试包(566)的类数不同。这有什么影响吗?
是的-结果是,所检测的内容与为生成报告而分析的内容不同。这也与有关不匹配的消息相关。