2012-12-18 127 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 
} 

一旦我做到了我所有的報道開始工作,並在問題得到解決。

相關問題