【问题标题】:Unable to Resolve Library Activity for Android Test无法解决 Android 测试的库活动
【发布时间】:2014-06-10 15:46:54
【问题描述】:

我使用Android-Release Archetype 创建了一个非常基本的 Android-Maven 项目。我更改的一件事是将 Android 项目设置为 Android 库。这意味着我没有定义活动的 AndroidManifest。 Maven 构建仍然适用于 HelloAndroidActivityHelloAndroidActivityTest,但即使复制这两个类也会使新测试失败:

无法解析以下活动:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=org.acme.project.android/.HelloAndroidActivity2}

我搜索了整个工作区,但找不到任何对 HelloAndroidActivity 的引用,这可以解释为什么它适用于该活动但不适用于该活动。所以我想我有两个问题:为什么集成测试适用于任何清单文件中未引用的活动?为什么它不适用于此活动的相同副本?

我认为这并不重要,但这些是我的AndroidManifests

图书馆项目:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="org.acme.project.android"
        android:versionCode="1"
        android:versionName="1.0-SNAPSHOT" >

        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

    </manifest>

集成测试项目:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="org.acme.project.android.test"
        android:versionCode="1"
        android:versionName="1.0-SNAPSHOT" >

        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

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

        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:targetPackage="org.acme.project.android" />
    </manifest>

没有改变我今天得到的东西:

[2014-06-09 08:39:47 - org.acme.project.android.it] 测试运行失败:由于“java.lang.ClassNotFoundException”,检测运行失败

根本没有额外的信息,甚至没有缺少哪个类。

【问题讨论】:

    标签: android


    【解决方案1】:

    我让它工作了。我认为只有最后一步是必要的,但在我的情况下,直到我完成整个考验之后它才起作用:

    1. 我将集成测试项目的包设置为org.acme.project.android(即删除了.test)——这使得Eclipse 能够执行测试
    2. 我再次添加了.test,因为 Maven 不喜欢将 R 文件放在一个包中 (IllegalArgumentException: already added: Lorg/acme/project/android/R)
    3. (此时,所有更改都已还原)我将活动添加到集成测试清单中

    正如我所说,前两个步骤应该是愚蠢的,但我已经在各地的各种清单文件中添加和删除了一百次活动,但它从未奏效。因此,也许在包更改后进行彻底的清洁和构建就是使更改可见所需要的全部内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多