我使用Android-Release Archetype创建了一个非常基本的Android-Maven项目。我改变的一件事是将Android项目设置为Android库。这意味着我没有定义活动的 AndroidManifest 。 Maven构建仍适用于HelloAndroidActivity
和HelloAndroidActivityTest
,但即使复制这两个类也会使新测试失败:
无法解决以下活动: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'而导致检测运行失败
根本没有额外的信息,甚至没有丢失哪个班级。
答案 0 :(得分:0)
我得到了它的工作。我认为只有最后一步应该是必要的,但就我而言,在我进行整个考验之后它才开始工作:
org.acme.project.android
(即删除了.test
) - 这使Eclipse能够执行测试.test
,因为Maven不喜欢一个包中的R文件(IllegalArgumentException: already added: Lorg/acme/project/android/R
)正如我所说,前两个步骤应该是愚蠢的,但是我已经将这些活动添加到各个清单文件一百次,并且它从未运行过。因此,可能需要在更换包装后进行彻底的清洁和构建,以使更改可见。