热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

班级的执行数据不匹配+Jacoco

如何解决《班级的执行数据不匹配+Jacoco》经验,为你挑选了1个好方法。

我使用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)的类数不同。这有什么影响吗?

是的-结果是,所检测的内容与为生成报告而分析的内容不同。这也与有关不匹配的消息相关。


推荐阅读
author-avatar
mobiledu2502878013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有