Cobertura和Maven:集成和单元测试的代码覆盖率

在姜黄项目中,我们每晚维护一个仪表板。 在仪表板上,我们收集有关项目的统计信息,包括代码覆盖率,findbugs分析和其他指标。 我们一直在使用Maven EMMA插件来提供代码覆盖,但是遇到了EMMA问题。 在对类进行检测后,这会导致测试失败。 因此,由于在构建过程中需要准确的测试结果,因此我们禁用了代码覆盖率。 但是,我们仍然需要覆盖代码,更重要的是,我们还需要覆盖现有测试套件,这实际上是一个集成测试套件,而不是单元测试套件。

Cobertura和EMMA插件实际上都是设计用于单元测试的。 因此,我们必须解决该限制。

  1. 首先,我们需要对类进行检测。
  2. 其次,我们需要打包检测的类,并在以后的构建中使用它们。
  3. 需要告诉集成测试为其使用依赖的检测类。
  4. 生成结果的XML报告。

我尝试过这样做,但又不依赖于ant,但是每次我尝试使用maven-site-plugin并将其配置为生成报告时,都会抱怨cobertura:check没有正确配置。 在我们的情况下,我不需要运行检查,只需要生成的报告即可。 于是Ant和AntContrib得以营救。 以下是我想出的完整的Maven个人资料:


         cobertura
         
            
               net.sourceforge.cobertura
               cobertura
               true
               1.9.4.1
            
         
         
            
               
                  org.codehaus.mojo
                  cobertura-maven-plugin
                  
                     
                        
                           org/ebayopensource/turmeric/test/**/*.class
                           org/ebayopensource/turmeric/common/v1/**/*.class
                        
                     
                  
                  
                     
                        cobertura-instrument
                        process-classes
                        
                           instrument
                        
                     
                  
               
               
                  org.apache.maven.plugins
                  maven-jar-plugin
                  
                     
                        cobertura-jar
                        post-integration-test
                        
                           jar
                        
                        
                           cobertura
                           ${basedir}/target/generated-classes/cobertura
                        
                     
                  
               
               
                  org.apache.maven.plugins
                  maven-install-plugin
                  2.3.1
                  
                     
                        cobertura-install
                        install
                        
                           install
                        
                        
                           cobertura
                        
                     
                  
               
               
                  org.apache.maven.plugins
                  maven-antrun-plugin
                  
                     
                        verify
                        
                           
                              
                              
                              
                              
                                 
                                 
                                    
                                    
                                    
                                 
                                 
                                    
                                 
                              
                           
                        
                        
                           run
                        
                     
                  
                  
                     
                        ant-contrib
                        ant-contrib
                        20020829
                     
                  
               
            
         
      

注意:请勿在此配置文件中使用cobertura:cobertura目标。 由于它将尝试对类进行两次检测,因此构建将失败。

必须使用Ant和AntContrib,因为没有cobertura:report目标,因为它希望在网站生成阶段运行。 但是,这会导致检查目标也可以运行,而我们则不需要。 因此,也许,我将制作一个补丁以添加报告目标,以便仅运行报告而不必运行站点目标。 希望这对某些人有帮助,因为我为此花费了很多时间。

祝您编程愉快,别忘了分享!

参考: Intelligent Cramps博客上的JCG合作伙伴 David Carver 使用Cobertura和Maven为集成和单元测试启用代码覆盖率 。


翻译自: https://www.javacodegeeks.com/2012/09/cobertura-and-maven-code-coverage-for.html

你可能感兴趣的:(Cobertura和Maven:集成和单元测试的代码覆盖率)