2013-03-11 35 views
0

現在用艾瑪記錄代碼覆蓋。對線路覆蓋率(或線路%)特別感興趣我們計劃通過「自動化」來增加源代碼的線路覆蓋率。我們首先手動執行場景,然後使用emma檢查行%是否增加。如果有,我們繼續並自動化該功能。我堅持使用特定的IF-ELSE塊,當我手動運行場景時,看到了期望的結果。但艾瑪並沒有將這條線記錄下來。以下是示例代碼艾瑪沒有記錄的行覆蓋,即使它執行

if (a == null) 
      { 
       final class1 c1 = new class1(); 
       if (c1.isSE()) 
       { 
        c1.sendRedirect(req, res, "error.html"); 
       } 
       else 
       { 
        c1.sendRedirect(req, res, "testpage.html"); 
       } 
       return; 
      } 

艾瑪報告中的前3行是綠色的。但是,下面的下面的線是紅色的艾瑪報告(這意味着他們沒有被覆蓋)

c1.sendRedirect(req, res, "error.html"); 
c1.sendRedirect(req, res, "testpage.html"); 
return; 

但是,當我手動執行的情況下,我看到期望的結果(即我重定向到testpage.html頁)爲什麼艾瑪不會將此行記錄爲已涵蓋?

注:我曾嘗試下面的下面的故障處理(在http://emma.sourceforge.net/faq.html提到)

3.18。 EMMA開始報告稱,其儀表0類,即使我給它一些輸入...

你可能會得到通過EMMA儀器的增量性質絆倒。當調試啓用EMMA建造,嘗試無論是 乾淨的編譯和/或刪除所有儀器的輸出目錄 並用手所有.EM/ .ec文件EMMA重置爲乾淨的狀態。

+0

你是如何生成報告的?你使用什麼構建工具? – gsndev 2013-08-07 21:52:32

回答

1

可能對誰參閱本未來有用的人......

當儀器Jars.you可以看到艾瑪列出一些類與「無級調試模式編譯」。如果您在測量時看到這些信息,則不會生成Line%Coverage。爲了克服這個問題,你需要在調試模式下編譯這些類,或者考慮排除這些類不是必需的。通常具有上述消息的類將是第三方類。

如果你沒有看到消息「類編譯時沒有調試模式」,而插裝 - 那麼你應該看到的行覆蓋率在報表中。