6

我正在尝试将 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 xml 测试结果和提要它给竹子。

此外,用于创建构建的构建代理是一个 Ubuntu VM,它没有任何 GUI,因此我需要通过命令行完成所有操作。AVD 已在该 VM 上运行。

当我第一次在adb shell am instrument .. <snip>本地运行命令时确实遇到了同样的问题,我发现它在从 Eclipse 运行测试后工作起来很奇怪。

查找错误日志,Android Instrumentation Framework文章告诉我

“可能是您的设备上未安装检测 apk,或者清单文件中的软件包名称不正确。”

所以一定是没有安装instrumentation apk。

那么,如何将仪器 apk 安装到 AVD 上?

谢谢!

4

6 回答 6

3

可能有多种情况会导致此错误,但我是因为没有在模拟器上安装测试包的检测版本而得到它。文档有点少,但我认为您没有安装到模拟器上的“仪器 APK”(至少我找不到这样的东西);您构建包含仪器的测试应用程序。无论如何,这就是我使用 ant 从命令行运行测试的方式,现在可以使用:

ant instrument install test

这也适用于使用 Android 模拟器插件(https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator+Plugin)在 Jenkins 上运行。我在这里的命令行构建文档中找到了仪器任务:http: //developer.android.com/tools/building/building-cmdline.html

于 2013-02-08T03:38:34.550 回答
2

还有一个可能的原因:Manifest 文件中的包名不正确。

首先检查单元测试项目清单文件中的包名称!

于 2011-08-02T05:54:37.553 回答
1

如果您添加到构建脚本中,您也许可以解决这个问题:

adb install -r testproject/bin/testproject.apk

首先检查 apk 文件是如何命名的,因为我仍然没有弄清楚 ant 将如何准确地做到这一点,但它通常是在bin目录中创建的。

另请参阅官方 android 文档。

于 2012-04-04T13:51:23.193 回答
1

我也是为数不多的下载自定义 InstrumentationTestRunner ( http://code.google.com/p/the-missing-android-xml-junit-test-runner/ ) 的人之一,我目前被困在这个问题上!我收到同样的错误消息,不幸的是我现在不知道答案,但当我发现有用的东西时会更新。与此同时,我寻找了其他选项,例如此人的 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

于 2011-09-12T19:23:52.573 回答
0

I ran into this problem when running my tests against an old Android 1.5 virtual device. After switching to a 2.3.3 virtual device the problem went away. I don't know if the problem is due to the virtual device OS being old or the virtual device being created with old Android SDK tools.

于 2013-09-26T08:21:22.290 回答
-1

在 Bamboo 下运行 android 构建时,我遇到了完全相同的问题。我发现由于某种原因android:targetPackage,我的测试项目清单中的元素不正确。它被设置为我的主项目的包,而不是测试项目。出于某种原因,在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" />

突然间一切正常。

于 2012-12-10T03:06:34.557 回答