2012-12-18 99 views

回答

2

万一你忘记做这些:

  1. 是否使用@Test标注你的测试?
  2. 您是将该类作为JUnit测试用例还是从覆盖按钮运行?

我不确定问题的原因是什么,导致它总是为我工作。你有没有从eclipse本身安装它?尝试卸载它,然后从eclipse重新安装。以下是如何做到这一点,以防万一:

  1. 在Eclipse中,点击“帮助”>“安装新软件”
  2. 点击“添加”,然后键入以下内容:
  3. 选择EclEmma,并安装
+0

叶氏,使用@Test。从覆盖按钮运行。测试运行正常,但覆盖率总是显示0%,所有红色路径。 – renanlf

+0

我已更新答案,检查它是否有帮助。 – Steve

+0

不...还是一样= /。你在Maven项目中使用它吗?导致这个问题似乎只发生在这里的maven项目 – renanlf

5

根据官方网站,Eclemma是基于JaCoCo库的Eclipse代码覆盖插件。

当你要使用外Eclipse的代码覆盖引擎,你应该包括项目的Maven配置(POM)里面的插件Jacoco,如下面的(this code was copied from the Agile Engineering blog):

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.6.0.201210061924</version> 
      <executions> 
       <execution> 
        <id>jacoco-initialize</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-site</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

运行测试只需键入的命令行工具如下:

mvn clean test 

PS:你也可以使用其他的代码覆盖率插件,像CoberturaEmma

+0

我无法插入[Eclemma](http://www.eclemma.org/)和[Emma网站]的超链接(http://emma.sourceforge.net/maven-emma-plugin/)在上面的帖子。 –

+0

我也有同样的问题,我得到了一个GWT项目,而不是maven ...,因为Renanlf说,总是获得0%的覆盖率。 – Dipak

2

现在我意识到你只是想使用Eclipse内部的工具的报告...

如何在Eclipse对话框的代码覆盖率?您是否尝试过使用mouse right click on this dialog to export session (report)File -> Export

+0

是的,这只是导出覆盖的执行情况,导出的报告继续以0%覆盖率=/ – renanlf

+0

因此,我有两个建议: 1.尝试重新安装Eclemma插件(如果您使用更新站点进行安装它最后一次尝试从市场上安装它); 2。如果以前没有工作,试着直接从Maven使用JaCoCo库(正如我在其他文章中所解释的)来隔离问题,确保问题只是关于Jacoco(eclipse插件)上方的层,而不是来自此发动机。 –

2

这是一个已知的问题多年,遗憾的是还没有官方的解决方案。

你可以看到它hereherehere

一个不那么蜂蜜的解决办法是尝试使用eCobertura(或降级eclemma从2.x到1。X)

-1

我使用eclemma 2.3.2和它的基于Eclipse的工作完美

我只需要在我的pom.xml

<dependency> 
    <groupId>org.jboss.arquillian.extension</groupId> 
    <artifactId>arquillian-jacoco</artifactId> 
    <version>1.0.0.Alpha6</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jacoco</groupId> 
    <artifactId>org.jacoco.core</artifactId> 
    <version>0.7.1.201405082137</version> 
    <scope>test</scope> 
</dependency> 

然后我生成项目,更新添加这些依赖如预期

0

Maven项目配置和运行覆盖插件我只是遇到了这个问题,它是由配置不正确的类路径造成的。当单元测试被执行时,它们针对一个编译的jar(在eclipse之外编译的实际源代码)执行,而不是我实际的源代码。从我的类路径中删除jar后,单元测试正确地打我的包源。

0

如果您正在使用eclemma,你需要添加jacoco依赖。如果jacoco已添加并仍,你都面临这个问题,请参阅该eclemma faq: "Why does a class show as not covered although it has been executed?"

它说,

首先确保执行数据已经收集。为此,请选择HTML报告右上角的“会话”链接,并检查是否列出了有问题的类。如果列出但未链接,则执行时的类是不同的类文件。确保您在运行时使用完全相同的类文件以生成报告。请注意,某些工具(例如EJB容器,模拟框架)可能会在运行时修改您的类文件。

因此,Mockito/PowerMockito可能会导致此问题。您可能已经实例化了要测试的类,并在该对象上执行了PowerMockito.spy()。您将看到测试用例没有错误地正确执行,但Jacoco不会在其报告中改进代码覆盖率。

你不应该把你在@PrepareForTest()注释测试的类。检查你是否已经添加它并将其从注释中移除。

0

我能够通过的测试用例上调用类的一个实例来解决地雷问题。 即

public hotelOccupancy hotel = new hotelOccupancy(); 

@Test 
public void testName() { 
    // some test here 
} 

一旦我做到了我所有的报道开始工作,并在问题得到解决。

相关问题