簡體   English   中英

如何輕松單元測試Blackberry代碼?

[英]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類。 那假定您必須自己實現所有類功能。

在沒有模擬器的情況下測試j2me

這將是一個非常好的選擇,但到目前為止,我看不到如何做到這一點。

測試涉及應用程序運行,這涉及平台模擬。 如果沒有運行整個UI模擬器,可以測試j2me代碼,但我不知道。

您可以做的是在Java Standard Edition上測試一些業務邏輯,並盡可能減少代碼更改。

你仍然需要在模擬器上運行平台相關的功能測試,但是你可以在一個應用程序中完成它,這將是一組單元測試,就像ChrisW已經說過的那樣。 只需逐個運行測試方法並在屏幕上輸出結果:
方法1 - 通過 - 0.03秒
方法2 - 通過 - 1.30秒
方法3 - 通過 - 0.25秒

J2MEUnit

http://j2meunit.sourceforge.net/

J2MEUnit是一個Java 2 Micro Edition(J2ME)庫,包含J2ME應用程序的單元測試框架。 它基於原始JUnit的源代碼,這是Java,J2SE標准(桌面)版本的成功單元測試框架。

使用J2MEUnit和Eclipse對J2ME應用程序進行單元測試
設置和學習J2MEUnit的快速教程

使用JMUnit

http://jmunit.sourceforge.net/

JMUnit是基於JUnit的Java ME(J2ME)的單元測試框架。 它具有以下功能:
- 適用於Sun仿真器和實際設備。
- 很小(即使在舊的MIDP 1.0設備上也可以運行測試)。
- 具有用於檢查測試失敗的全面Assert方法集合。
- 支持TestCases和TestSuite。
- 包括用於在連續構建中運行JMUnit測試的Ant任務。
- 性能監控類的靈感來自JUnitPerf。

編寫和運行JMUnit測試

BUNIT

基於jmunit的RIM Blackberry單元測試庫

http://sourceforge.net/projects/b-unittesting/
BlackBerry支持社區論壇:如何對我的Blackberry應用程序進行單元測試

額外

如何 - 使用BlackBerry Simulator自動進行測試

當我想對一些Windows Mobile代碼進行單元測試時,我在模擬器/模擬器和/或設備本身上運行它們。

這是不切實際的,因為我不打算在實現每個測試/功能后啟動一個需要近一分鍾啟動的模擬器。

我可以啟動它,將軟件加載到它上面,然后運行測試...讓它運行...重新加載新的應用程序軟件而不重新啟動 ,然后重新運行它。 也許黑莓不允許這樣做?

此外,我可以一次性運行一整套測試(無需在每個測試/功能之間重新啟動)。 也許這與TDD不相容,如果你的習慣是:

  1. 寫一個測試用例
  2. 運行它以確保它失敗
  3. 寫下實現
  4. 再次運行,以確保這次成功
  5. (如上所述重復下一個要實現的功能)

它可能會發生。 設備驅動程序例如:繁瑣的調試,因為系統可能需要每次啟動,因為如果它們有問題,它們會掛起系統,因為調試器不是用戶友好的...這樣的環境交互性較小,所以更加強調:

  • 第一次正確使用(所以你不必調試)
  • 一次實現(並編寫測試並隨后測試)更大(可能是整個)的功能塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM