2010-05-03 103 views
3

我正在尋找一個我可以在BlackBerry應用程序中使用的code coverage工具。我正在使用J2ME-Unit進行單元測試,我想看看我的測試覆蓋了多少代碼。BlackBerry的代碼覆蓋工具

我試過使用Cobertura for J2ME但經過幾天的摔跤後,我沒有得到任何結果。 (我相信RAPC編寫的工具沒有完成)。儘管this message,該項目似乎已經死亡。

我看過JInjector但該項目似乎很不完整。幾乎沒有(如果有的話)文檔,雖然它要求能夠與BlackBerry項目一起工作,但我還沒有看到已將用於該目的的任何地方。我已經玩過這個項目,但是沒有用。

我也嘗試了BlackBerry JDE中的「Coverage」視圖,即使我使用Eclipse進行開發。無論點擊「刷新」並從JDE運行應用程序,視圖都保持空白。

我看過most of the tools on this SO thread,但它們不適用於J2ME/BlackBerry項目。

有沒有人在BlackBerry上的任何代碼覆蓋工具的成功?如果是這樣,你使用了什麼工具?你是如何使用它們的?

如果有人設法讓J2In能夠與JInjector或Cobertura一起使用BlackBerry項目,那麼爲了使它工作,您需要做些什麼?

回答

2

我不能說Coberatura或JInjector,因爲我不知道他們如何收集測試覆蓋率探測數據。

什麼是 關鍵是如何捕獲這些數據(是否需要僅在標準Java VM中提供Java運行時支持?)以及如何將其導出到測試覆蓋率顯示/報告生成工具。

我們SD Java Test Coverage工具儀器您的源代碼;在運行時,這會生成一組代表覆蓋數據的本地Java布爾值,而不需要任何特殊的VM支持。通常,在您的應用程序退出時,此數組將直接導出到測試覆蓋率顯示機制使用的文件中,該文件由隨測試覆蓋率工具提供的TCVDump方法導出。

嵌入式系統中的Java(以及其他使用的編程語言)通常需要自定義方法來提取測試覆蓋率數據。您可能需要編寫一個特殊的轉儲過程(使用Java)來將該布爾數組寫出到可訪問的位置。我們建立這樣的自定義轉儲程序的經驗是它們通常很簡單(幾十行);真正的訣竅是決定如何/在哪裏放置數據,以便它可以輕鬆移動到目標文件。大多數情況下,這只是一對特殊副本,其中第一個副本將布爾數組複製到某個分段位置,第二個將暫存數據寫入目標文件。 (標準TCVdump方法以源代碼形式提供以實現這種定製)。

雖然我沒有專門看黑莓,但是如果你可以在任何地方寫數據,你幾乎可以放心,你可以做到這一點。我們已經與其他嵌入式手持設備系統(如Symbian)取得了成功,這樣做。

如果你想如何爲一般測試覆蓋率儀器代碼以下這一戰略的完整概述,請參閱本文:Branch Coverage for Arbitrary Languages Made Easy

0

我積極地參與了JInjector在谷歌工作時。我們能夠使用它來成功獲取黑莓應用程序的代碼覆蓋率。 Balckberry應用程序的應用程序生命週期比J2ME更難預測,我們發現我們必須調整應用程序代碼以確保收集覆蓋率數據。我沒有親自在黑莓應用程序上工作,其他幾個工程師也一樣。我希望我們能夠創建一個黑莓應用程序示例,並將它放在注射器網站上,但是事件和生活就這樣陷入了困境。

如果您願意提供帶有單元測試的示例黑莓應用程序,我願意花幾個小時嘗試幫助您獲得代碼覆蓋率。我沒有積極地使用J2ME或Blackberry(當我有時間嘗試使用移動設備時,我目前正在開發Android應用程序),所以我很生疏。我有一份不涉及太多移動測試自動化的日常工作,但是我繼續努力改進移動應用的測試自動化,例如http://code.google.com/p/mwta/downloads/list適用於Android測試自動化。

我是julianharty在gmail.com

+0

感謝朱利安,但這對我來說現在大多無關緊要;自從我切換項目以來(儘管我在這裏工作的BlackBerry應用程序取得了巨大的成功)。 ;-) – Skrud 2011-03-08 06:09:36