簡體   English   中英

Android:如何將 Instrumentation APK 安裝到無頭主機中的 AVD 上

[英]Android: How to Install the Instrumentation APK onto an AVD in a Headless Host

我正在嘗試將 Android JUnit 測試與我們的 Bamboo Ant 構建集成。 我已經在本地測試了設置,並且能夠運行測試。

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

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

請注意,我為 Instrumentation 使用了一個自定義庫( http://code.google.com/p/the-missing-android-xml-junit-test-runner/ ),這樣我就可以拉出 JUNit Z0F635D0E10F3874FFF8B 結果它給竹子。

此外,用於創建構建的構建代理是 Ubuntu 虛擬機,它沒有任何 GUI,因此我需要通過命令行完成所有操作。 AVD 已在該 VM 上運行。

當我第一次在本地運行adb shell am instrument.. <snip>命令時,我確實遇到了同樣的問題,我發現它在從 Eclipse 運行測試后工作起來很奇怪。

查找錯誤日志, Android Instrumentation Framework文章告訴我

“您的設備上可能未安裝儀器 apk,或者清單文件中的 package 名稱不正確。”

所以一定是沒有安裝instrumentation apk。

那么,如何將儀器 apk 安裝到 AVD 上?

謝謝!

可能有多種情況會導致此錯誤,但我是因為沒有在模擬器上安裝測試 package 的儀器版本而得到它。 文檔有點少,但我認為您沒有安裝到模擬器上的“儀器 APK”(至少我找不到這樣的東西); 您構建包含儀器的測試應用程序。 無論如何,這就是我使用 ant 從命令行運行測試的方式,現在可以使用:

ant instrument install test

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

還有一個可能的原因:Manifest 文件中的 package 名稱不正確。

首先檢查單元測試項目清單文件中的 package 名稱!

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

adb install -r testproject/bin/testproject.apk

首先檢查 apk 文件是如何命名的,因為我仍然沒有弄清楚 ant 是如何做到這一點的,但它通常是在bin目錄中創建的。

另見官方 android 文檔。

我也是少數下載自定義 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 -一體化/

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

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

在 Bamboo 下運行 android 構建時遇到了完全相同的問題。 我發現由於某種原因,我的測試項目清單中的android:targetPackage元素不正確。 它被設置為我的主項目的 package,而不是測試項目。 出於某種原因,在 eclipse 中運行測試時運行一切正常,但是當我嘗試在命令行運行 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" />

突然間一切正常。

暫無
暫無

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

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