2010-01-09 89 views
2

按照Diego Torres blog的一些說明操作後,我可以使用普通的Eclipse JUnit測試運行器來測試我的類,但是我也希望能夠在模擬的android環境中運行我的單元測試。當我嘗試在Android模擬器上運行Junit測試用例時,爲什麼會發生此錯誤?

現在這應該沒有什麼真正的區別,因爲我正在從事的類是非常基本的數值或聯網任務,但顯然任何涉及UI或Android API特定功能的東西都只能在仿真器上進行測試。

我設置類型AndroidJUnitTest至極的新運行配置使用android.test.InstrumentationTestRunner,但是每當我火了測試,我在控制檯中出現以下錯誤:

[2010-01-09 00:45:23 - Pal1]Uploading Pal1.apk onto device 'emulator-5556' 
[2010-01-09 00:45:23 - Pal1]Installing Pal1.apk... 
[2010-01-09 00:45:25 - Pal1]Success! 
[2010-01-09 00:45:25 - Pal1]Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5556 
[2010-01-09 00:45:27 - Pal1]Test run failed: Unable to instantiate instrumentation ComponentInfo{org.stodge.traderpal/android.test.InstrumentationTestRunner}: java.lang.ClassNotFoundException: android.test.InstrumentationTestRunner in loader [email protected] 

正如你所期望,測試結束(沒有在最終的「無法實例化儀器化ComponentInfo」消息後實際運行任何測試)

現在我的測試案例只包含Junit3和Junit4鍋爐代碼。測試只包含fail()調用,我只需要在這個階段完成表明我可以在兩種環境中執行基本的單元測試,以便開始測試驅動開發。

注: - 在Ubuntu 64位 運行Eclipse 3.5 - 仿真器設置爲API級別2 - 我是新來的Android和Java兩種,所以原諒我的基本問題

+1

我可能會誤解,但我認爲混合JUnit 3和JUnit 4通常被認爲是一個壞主意。挑一個並堅持下去。 (我知道關於Java但不關於Android,所以我可能完全錯誤) – MatrixFrog 2010-01-09 01:09:25

+0

我很確定Junit4測試運行者可以處理Junit3測試用例。當然,這不是可以接受的,但是現在我試圖看看不兼容性是否與一個版本相關:不是。 – 2010-01-10 01:18:40

回答

6

我會忽略什麼博客說;看起來很過時。

你不需要導入JUnit庫或類似的東西; Android SDK中集成了相應的類TestCase等。

只需在您的項目中創建一個新課程並將其延伸至AndroidTestCase即可。然後,您可以右鍵單擊要運行的測試用例(或測試用例包),然後選擇運行方式爲→ Android JUnit測試。

此外,我會使用高於2的API級別。Virtually no devices in use正在運行Android 1.1;您可以安全地切換到API級別3,這是Android 1.5,與以前的版本相比有了很大的改進。

+0

你知道android測試運行器是否可以運行派生自junit.framework.TestCase的類? – 2010-01-10 01:12:26

+1

是的,這也可以。就像上面那樣「運行」Android JUnit測試。 – 2010-01-10 02:04:50

+0

您是否知道android測試運行器是否可以處理Junit4風格的測試用例,還是嚴格的Junit3兼容? – 2010-01-10 15:22:29

相關問題