在Eclipse中使用自定义InstrumentationTestRunner会导致错误

时间:2012-10-23 02:24:28

标签: android unit-testing

我在Eclipse中有一个单独的测试项目,它已经在命令行和Eclipse中成功运行了一段时间。在使用Jenkins运行我的测试时,我遇到了标准InstrumentationTestRunner不以Jenkins支持的xml格式输出的问题。我已经在互联网上阅读使用自定义InstrumentationTestRunner。这在使用ADB的命令行中有效,但在作为Android测试用例运行时在Eclipse中失败。

我已经下载了一个自定义检测测试运行器(com.neenbedankt.android.test)并将其添加到AndroidManifest中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testedapplication.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <instrumentation
        android:name="com.neenbedankt.android.test.InstrumentationTestRunner"
        android:targetPackage="com.testedapplication" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
    </application>    
</manifest>

以下是我在Eclipse中遇到的错误:

[测试项目]未正确配置以运行测试: 无法找到AndroidManifest.xml中检测android.test.InstrumentationTestRunner的targetPackage属性!

你可以看到我在那里设置了targetPackage,所以我不确定我还能做什么?

4 个答案:

答案 0 :(得分:12)

在AndroidManifest.xml中添加两个工具。

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

<instrumentation
    android:name=".MyRunner"
    android:targetPackage="com.example.myapp" />

然后转到Package explorer - &gt; $(您的测试项目$) - &gt;运行方式 - &gt;运行配置 - &gt; Android JUnit测试 - &gt; $(您的测试项目) - &gt; Instrumentation Runner并在那里选择你的跑步者。

答案 1 :(得分:1)

要在运行/ android junit时默认选择自定义运行器 - 只需在清单文件中切换顺序即可。确保你的第一个

<instrumentation
android:name="*.Custom.TestRunner"
android:targetPackage="com.*" />

<instrumentation
android:name="*.InstrumentationTestRunner"
android:targetPackage="com.*" />

答案 2 :(得分:0)

由于我无法看到您的整个项目设置,因此我会尝试一些检查清单。

  1. 您在Eclipse中有一个单独的测试项目吗?以上检测块是源项目的清单文件还是测试项目的清单文件中?

  2. 您是否包含&lt; uses-library android:name =“android.test.runner”/&gt;方框?

  3. 您是否将测试项目的检测块放在&lt; application&gt;之外?块和&lt; uses-library&gt;阻止测试项目的应用程序块?

  4. 您是否尝试通过“新建项目 - &gt; Android测试项目”在Eclipse中创建测试项目,并在添加源代码后只更改了测量类?如果您不更改检测类,它是否有效?

  5. 您是否通过“运行方式 - &gt; Android JUnit测试”在Eclipse中运行测试?

  6. 如果您已经完成了所有这些操作,我认为粘贴整个AndroidManifest文件将有助于澄清一下,以及您是否有2个单独的项目。

答案 3 :(得分:0)

到目前为止,我已经能够通过同时拥有android.test.InstrumentationRunner运行器和清单文件中描述的客户测试运行器来实现它。我似乎从Eclipse运行将使用android.test.InstrumentationRunner并从命令行运行将使用自定义测试运行器,如果它在ant脚本中设置。