[英]How can I easily unit test Blackberry code?
對於我的大學課程,我們正在開發一個多線程Blackberry應用程序,它允許我們使用藍牙掃描運行我們應用程序的其他設備,然后通過Wifi接口通過TCP傳輸文件,實現NAT遍歷,同時記錄我們的GPS位置。 (這是RIM贊助的計算機網絡課程,如果還不明顯的話。)
我喜歡測試驅動開發,並且正在用它來開發我的家庭作業。 但是,由於非法修飾符,我在測試期間擴展或以其他方式調用的任何Blackberry類都會給出一個ClassFormatError 。 我認為這個錯誤是由於帶有Blackberry代碼的jar必須是專門為其專有JVM編譯的。
到目前為止,我已經使用代理模式並實現了代理的模擬對象 。 然而,由於我繼承了許多原生Blackberry類,因此這變得非常繁瑣。
我還想避免在可能的情況下啟動Blackberry模擬器。 啟動它可能需要幾分鍾,這對單元測試來說是不切實際和煩人的。
有沒有簡單的方法來單元測試我的Blackberry代碼?
你是關於模擬的正確方法,但我不建議你在J2SE平台上測試Blackberry功能。 我認為應該使用代理和模型,以防本機源中沒有可用的測試數據,例如:
“掃描其他設備” - 沒有其他設備,但你想測試掃描功能
“通過Wifi界面的TCP” - 你想在Storm上測試它(沒有WiFi)
“記錄我們的GPS位置” - 設備位置是靜態的,但您想測試其他位置
然后你可以使用Blackberry平台模擬這樣的功能:
黑莓GPS位置樣機
您仍然可以使用相同的名稱和簽名從頭開始在J2SE上重現BlackBerry API類。 那假定您必須自己實現所有類功能。
這將是一個非常好的選擇,但到目前為止,我看不到如何做到這一點。
測試涉及應用程序運行,這涉及平台模擬。 如果沒有運行整個UI模擬器,可以測試j2me代碼,但我不知道。
您可以做的是在Java Standard Edition上測試一些業務邏輯,並盡可能減少代碼更改。
你仍然需要在模擬器上運行平台相關的功能測試,但是你可以在一個應用程序中完成它,這將是一組單元測試,就像ChrisW已經說過的那樣。 只需逐個運行測試方法並在屏幕上輸出結果:
方法1 - 通過 - 0.03秒
方法2 - 通過 - 1.30秒
方法3 - 通過 - 0.25秒
http://j2meunit.sourceforge.net/ :
J2MEUnit是一個Java 2 Micro Edition(J2ME)庫,包含J2ME應用程序的單元測試框架。 它基於原始JUnit的源代碼,這是Java,J2SE標准(桌面)版本的成功單元測試框架。
使用J2MEUnit和Eclipse對J2ME應用程序進行單元測試
設置和學習J2MEUnit的快速教程
http://jmunit.sourceforge.net/ :
JMUnit是基於JUnit的Java ME(J2ME)的單元測試框架。 它具有以下功能:
- 適用於Sun仿真器和實際設備。
- 很小(即使在舊的MIDP 1.0設備上也可以運行測試)。
- 具有用於檢查測試失敗的全面Assert方法集合。
- 支持TestCases和TestSuite。
- 包括用於在連續構建中運行JMUnit測試的Ant任務。
- 性能監控類的靈感來自JUnitPerf。
基於jmunit的RIM Blackberry單元測試庫
http://sourceforge.net/projects/b-unittesting/
BlackBerry支持社區論壇:如何對我的Blackberry應用程序進行單元測試
當我想對一些Windows Mobile代碼進行單元測試時,我在模擬器/模擬器和/或設備本身上運行它們。
這是不切實際的,因為我不打算在實現每個測試/功能后啟動一個需要近一分鍾啟動的模擬器。
我可以啟動它,將軟件加載到它上面,然后運行測試...讓它運行...重新加載新的應用程序軟件而不重新啟動 ,然后重新運行它。 也許黑莓不允許這樣做?
此外,我可以一次性運行一整套測試(無需在每個測試/功能之間重新啟動)。 也許這與TDD不相容,如果你的習慣是:
它可能會發生。 設備驅動程序例如:繁瑣的調試,因為系統可能需要每次啟動,因為如果它們有問題,它們會掛起系統,因為調試器不是用戶友好的...這樣的環境交互性較小,所以更加強調:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.