2011-07-07 22 views
6

我正嘗試將Android JUnit測試與我們的Bamboo Ant構建集成。我已經在本地測試了設置,並且能夠運行測試。Android:如何將Instrumentation APK安裝到無頭主機中的AVD

但是,當我在我們的竹服務器試圖相同的設置,我運行測試時出現以下錯誤:

INSTRUMENTATION_STATUS: id=ActivityManagerService 
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.synapticstuff.guitartabs/pl.polidea.instrumentation.PolideaInstrumentationTestRunner} 
INSTRUMENTATION_STATUS_CODE: -1 
android.util.AndroidException: INSTRUMENTATION_FAILED: com.synapticstuff.guitartabs/pl.polidea.instrumentation.PolideaInstrumentationTestRunner 

請注意,我用儀器自定義庫(http://code.google.com/p/the-missing-android-xml-junit-test-runner/),讓我可以拉JUNit xml測試結果並將其提供給Bamboo。

此外,在創建構建是一個Ubuntu VM,它沒有任何圖形用戶界面,所以我需要做的通過命令行使用一切生成代理。 AVD已經在該VM上運行。

我也遇到同樣的問題,當我第一次運行本地adb shell am instrument .. <snip>命令,我發現很奇怪它從Eclipse中運行測試後的工作。

仰望錯誤日誌中,Android Instrumentation Framework文章告訴我,

「這有可能是 儀表apk未在 設備或包名 是在清單文件不正確安裝「。

所以它必須是儀表apk未安裝。

所以,我怎麼安裝儀器的apk到AVD?

謝謝!

回答

2

還有另一種可能的原因:包名是在清單文件不正確。

檢查您的單元測試項目的清單文件第一包的名稱!

+0

很好的答案!謝謝 – Snicolas

1

我也是爲數不多的下載了自定義InstrumentationTestRunner(http://code.google.com/p/the-missing-android-xml-junit-test-runner/)的人之一,我目前在這個問題上陷入困境!我收到同樣的錯誤信息,不幸的是我現在不知道答案,但是當我發現有用的東西時會更新。 在我看起來像這個人的測試運行其它選項其間:http://www.alittlemadness.com/2010/07/14/android-testing-xml-reports-for-continuous-integration/

也有相關的持續集成另一個討論:How to Generate Android Testing Report in HTML Automatically

1

你也許可以解決這個問題,如果你添加到您的構建腳本:

adb install -r testproject/bin/testproject.apk 

結賬的APK文件首先如何被命名的,因爲我還沒有搞清楚,怎麼螞蟻要做到這一點完全是,但它正在目錄通常創建。

另請參閱android官方文檔。

-1

我遇到了與在Bamboo下運行Android構建完全相同的問題。我發現由於某種原因,我的測試項目清單中的android:targetPackage元素不正確。它被設置爲我的主要項目的軟件包,而不是測試項目。出於某種原因,在eclipse中運行測試時eveything運行正常,但是當我嘗試在命令行運行ant測試時,它死了。儀器儀表標記如下:

<instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.example.blah" /> 

這是我在創建項目時通過eclipse自動生成的。我把它改爲:

<instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.example.blah.test" /> 

突然一切都運行良好。

3

可能有多種情況會導致此錯誤,但是我沒有安裝在模擬器上的測試軟件包的檢測版本。文檔有點不足,但我認爲你沒有安裝到模擬器上的「instrumentation APK」(至少我找不到這樣的東西)。您可以使用包含的儀器來構建測試應用程序。無論如何,這是我如何使用Ant,現在該功能運行在命令行測試:

ant instrument install test 

,這也適用於使用詹金斯Android模擬器插件(https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator+Plugin)運行。我在這裏找到了命令行構建文檔中的儀器任務:http://developer.android.com/tools/building/building-cmdline.html

0

我對舊的Android 1.5虛擬設備運行測試時遇到了此問題。切換到2.3.3虛擬設備後,問題消失了。我不知道問題是由於虛擬設備操作系統舊的問題還是虛擬設備是使用舊的Android SDK工具創建的。