2012-02-17 134 views
0

在我的android應用程序的測試項目中,我最初對幾個低級類進行了一系列測試。低層次我的意思是說,他們不是活動,服務或任何特定的東西。他們只是根據規格進行一些工作的課程。他們通過應用上下文 - 數據庫,一些資源等傳遞一些信息。單元測試android類

所有的測試都是綠色的,我很高興。在我爲測試活動添加了另一個測試課程後,突然我的綠色測試開始失敗。我添加的Activity測試是綠色的,但現在一些綠色的測試現在會拋出異常。

從dalvik跟蹤看起來,雖然我以前使用的綠色測試不需要除應用程序上下文以外的其他任何東西,系統仍會嘗試恢復某些活動(不是我試圖用單元測試新的測試)。

所以,這裏是我的問題:我如何單元測試一個只需要應用程序上下文但沒有其他的類?如何防止運行時嘗試啓動我不在乎的活動?

+0

看看[Robotium](http://code.google.com/p/robotium/),它工作得很好。如果你已經使用硒,一些方面應該是熟悉的。 – Android 2012-02-18 02:59:38

+0

@Android他想單元測試。 Robotium用於[黑盒](http://en.wikipedia.org/wiki/Black-box_testing)測試,而不是單元測試。如果你真的想[單元測試](http://en.wikipedia.org/wiki/Unit_testing)Android應用程序,Robolectric是唯一的方法。 – 2012-02-20 19:36:06

回答

2

聽起來像是你想從你的單元測試中去掉Android。如果你可以使用Mocks,這將是很好的,但不幸的是,如果你涉及Android框架,你會遇到各種各樣的問題,試圖嘲弄事情。

我強烈建議你使用Robolectric來「defang」android,並使用Mockito來模擬你不關心的東西。這將允許你繼續在JVM上運行你的單元測試(我在這裏做一個假設)。

+0

在本地運行測試會很好,但這比我現在能夠脫字的東西還要多 – mfeingold 2012-02-18 01:32:41

+0

它不像看起來那麼糟糕,而且在您全部安裝完畢後,IMO處理Android測試框架要容易得多。如果您使用的是Eclipse,可以在這裏找到設置Robolectric的說明(http://pivotal.github.com/robolectric/eclipse-quick-start.html)。設置只需要約15分鐘。如果你想編寫真正的單元測試,這是最好的方法,因爲單元測試是關於隔離你的類的,所以你想讓Android脫離方式,並且能夠模擬出這些類這不是當前正在測試的課程。 – 2012-02-20 19:40:07

0

很難說,給你迄今爲止所傳達的信息。

您是否總是使用InstrumentationTestRunner來運行單元測試?您必須使用Instrumentation和InstrumentationTestRunner來測試任何使用Android框架的組件(Activity,Service,Content Provider)或Context。

這在「開發人員指南」中的「測試」中進行了說明。

+0

是的,測試項目被配置爲運行InstrumentationTestRunner(它的一個子類)。 – mfeingold 2012-02-18 01:31:31