2011-06-09 57 views
0

我正在處理一些由其他開發人員創建的Android代碼,並且他們要求我對它運行代碼覆蓋度度量。它是Android 2.3.3,他們使用ant來構建它們的文件。我在Ubuntu上運行,而其他開發人員在Windows/Mac上運行。Android,emma,ant和與螞蟻相關的錯誤

如果我單獨離開SDK/tools/lib/ant/main_rules.xml文件,就會發現emma的sourceforge頁面描述的錯誤:無法找到類com.vladium.emma.emmajavaTask所需的類:組織/阿帕奇/工具/螞蟻/任務定義/ Java」的

這顯然是通過具有lib目錄中都emma_ant.jar和emma.jar造成的。不用說,有emma_device.jar隻字不提。

如果我註釋掉尋找emma.jar的那一行,我可以建立這個項目,但是當創建一個測試項目來獲取測試代碼時,運行「ant coverage」返回

Problem: failed to create task or type emma 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 

這讓我陷入困境。它似乎在尋找emma_properties.config文件,但似乎只在emma.jar中被註釋掉了......

我覺得自己在圈子裏並沒有完成任何事情。任何幫助表示讚賞。

回答

0

考慮這個問題的答案的情況下,「試圖做太多的不理解的含義。」

EMMA的sourceforge頁面建議安裝emma.jar作爲JRE的擴展。如果你這樣做,你將會與SDK ant工具產生衝突。最安全的事情是忽略EMMA sourceforge獨立構建,並簡單地使用SDK給你的東西。在測試部分下的中找到了使其工作的說明。

1

我不認爲用螞蟻獲得EMMA覆蓋是一種簡單的方法,但使用make並沒有那麼複雜。首先,你需要設置

EMMA_INSTRUMENT=true 

在你的環境中創建一個儀表的構建,然後構建應用程序,並使用測試做,然後運行與

-e coverage 'true' 

<無恥的推廣>

儀器

我的即將出版的書Android Application Testing Guide包括使用此技術獲得如下覆蓋率報告的分步示例: EMMA coverage

< /無恥的推廣>

+0

Diego, 我很忠實地閱讀你的博客,我正在等你的書。我的問題是雙重的:1.「環境」意味着在.bashrc中設置變量,對嗎? 2.你在說什麼「製造」命令?雖然我以前使用Eclipse自動構建了一些東西,但我無法在此使用它。我對Java基礎結構知之甚少,不知道make是javac還是其他的東西。 – Kevin 2011-06-09 15:57:06

+0

螞蟻的覆蓋通常會給我一些令人討厭的編譯錯誤,但是這些錯誤並沒有使用完全相同的源代碼和make。但你的里程可能會有所不同 – 2011-06-09 20:03:42

+0

Make是一個構建工具[http://en.wikipedia.org/wiki/Make_(software)] – 2011-06-09 20:04:27