2012-01-20 215 views
0

我正在嘗試運行Android SDK附帶的示例代碼的示例單元測試。一些測試作爲標準單元測試運行,沒有問題。其他測試,如com.example.android.apis.view.Focus2AndroidTest,使用android類,因此需要在模擬器中運行,這是一個問題。如何在使用IntelliJ的模擬器中運行android測試?

我可以在我的模擬器中運行應用程序。但是,當我運行測試時,我的模擬器啓動,然後坐在那裏。測試從未運行。我在IntelliJ的輸出窗口中看到的全部是

Waiting for device. 
/Users/rfzabick/android-sdk-mac_x86/tools/emulator -avd MyAvd0 -netspeed full -netdelay none 
Device connected: emulator-5554 

我在做什麼錯?

編輯: @ CrazyCoder的建議後,我切換到Android 4.0.3(API 15)。下面是我的了: 測試開始於下午4點34分...

Waiting for device. 
/Users/rfzabick/android-sdk-mac_x86/tools/emulator -avd android4.0.3--api15 -netspeed full -netdelay none -wipe-data -no-boot-anim 
Device connected: emulator-5554 
Device is online: emulator-5554 
Target device: emulator-5554 (android4.0.3--api15) 
Uploading file 
    local path: /Users/rfzabick/IdeaProjects/ApiDemos/out/production/Tests/Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device is not ready. Waiting for 20 sec. 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device is not ready. Waiting for 20 sec. 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device disconnected: emulator-5554 
pkg: /data/local/tmp/com.example.android.apis.tests 


Running tests 
Test running startedTest running failed: com.android.ddmlib.AdbCommandRejectedException: device not found 
Empty test suite. 

我在logcat中看到的唯一實質性的事情就是

01-21 16:36:22.047: WARN/ActivityManager(91): No content provider found for permission revoke: file:///data/local/tmp/com.example.android.apis.tests 

回答

2

你可以在模擬器或USB設備上運行正常的應用程序嗎?嘗試創建新的仿真器設備,看看是否有幫助。

我和IDEA 11.0.1,4.0.3 Android平臺試圖在Windows和它工作得很好:

Waiting for device. 
Target device: emulator-5554 (ICS) 
Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\Tests\Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
pkg: /data/local/tmp/com.example.android.apis.tests 
Success 


Running tests 
Test running startedFinish 

您也可以嘗試重新啓動亞行與adb kill-server和AVD手動啓動模擬器經理。

確認模擬器中沒有預先安裝ApiDemos應用程序,或者簽名不匹配。卸載現有的ApiDemos,然後嘗試從IntelliJ IDEA部署並運行ApiDemos,然後嘗試再次運行測試配置。


UPDATE:我們做了一些研究,發現了問題的根源。默認情況下,IntelliJ IDEA將測試模塊內應用程序模塊的依賴範圍設置爲編譯,以便將所有生產和測試類編譯到單個Test.apk中。

相反,範圍必須設置爲提供,我們將在下一次更新中修復它。現在,你需要手動校正的截圖,如下所示:

Provided scope

重建項目並再次運行測試,這次2個單獨的APK文件將被部署,一個用於主應用程序和第二個用於測試,那麼測試將運行:

Waiting for device. 
Target device: emulator-5554 (ICS) 
Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\Tests\Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
pkg: /data/local/tmp/com.example.android.apis.tests 
Success 


Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\ApiDemos\ApiDemos.apk 
    remote path: /data/local/tmp/com.example.android.apis 
Installing com.example.android.apis 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis" 
pkg: /data/local/tmp/com.example.android.apis 
Success 


Running tests 
Test running startedFinish 
+0

我可以在模擬器中運行應用程序,沒有任何問題。這是單元測試,我無法運行。 –

+0

logcat面板中的任何相關錯誤?您是否嘗試使用新仿真器實例並重新安裝ApiDemos應用程序?你有沒有試用4.0.3(15)平臺? – CrazyCoder

+0

我試過了,並添加了上面的結果。沒有運氣。任何其他的事情要嘗試? –

0

您可以從螞蟻的儀器,從命令來自腳本的一行。如果你更喜歡後者,這個post可能會有所幫助。

-1

在仿真器運行單元測試是不實際的(基本上時間太長)。而且由於android罐子只用於編譯,所以用單元測試運行它們似乎是不可能的。良好的替代方案是採用先進的模擬框架(我個人比較喜歡jMockit, 但也有其他)

見例如:

https://github.com/ko5tik/andject/blob/master/src/test/java/de/pribluda/android/andject/ViewInjectionTest.java

這裏測試我對派生的Android活動類,它有調用超類方法 (當場運行maven,eclipse或IDEA)

+0

我知道我*可以*在我自己的測試中嘲弄事情。但android SDK附帶的示例應用程序帶有需要在模擬器中運行的單元測試。當然可以運行這些測試。 –

+0

在一臺像樣的x86機器上安裝了針對AVD的x86 binaraies,安裝了HAXM(Mac)和GPU後,仿真器可以比真實設備更快 - 並且可以在「PC」中輕鬆自行測試多種API級別。不要將自己限制在真實設備上測試 - 糟糕的建議。 –

+0

@KonstantinPribluda你是什麼意思,它需要太長時間?我有一臺Linux機器,最新的Android仿真器速度非常快。 –

相關問題