首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android上的库项目的独立测试项目

Android上的库项目的独立测试项目
EN

Stack Overflow用户
提问于 2012-04-24 23:59:05
回答 1查看 7.9K关注 0票数 16

我的问题是:如何为安卓库创建Android 独立测试项目?

我有我的Android库(在项目设置中被标记为“库”)和一个包含JUnit测试类的Android项目。测试项目正确引用了Android库(在项目设置中的Android下)。

我的库源代码位于com.mayastudios包中。我的所有测试用例也位于相同的包中(但位于不同的项目中)。所以基本上我有这样的东西:

代码语言:javascript
复制
+- MyLibraryProject
   +- src
      +- com/mayastudios/MyClass.java
   +- AndroidManifest.xml
   +- ...
+- MyTestProject (references MyLibraryProject)
   +- test
      +- com/mayastudios/MyClassTests.java
   +- AndroidManifest.xml
   +- ...

以下是测试项目的Android清单:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.spatialite.test"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.mayastudios" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application android:label="Spatialite-NewApi-UnitTests">
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>

然而,当我运行测试项目(从Eclipse with ADT,使用"Run As -> Android JUnit Test")时,我得到了以下错误:

代码语言:javascript
复制
Unable to find instrumentation target package: com.mayastudios

以下是完整的控制台日志:

代码语言:javascript
复制
[2012-04-24 17:24:20 - spatialite-test] Android Launch!
[2012-04-24 17:24:20 - spatialite-test] adb is running normally.
[2012-04-24 17:24:20 - spatialite-test] Performing android.test.InstrumentationTestRunner JUnit launch
[2012-04-24 17:24:20 - spatialite-test] Automatic Target Mode: using device '3732FBC2711300EC'
[2012-04-24 17:24:20 - spatialite-test] Uploading spatialite-test.apk onto device '3732FBC2711300EC'
[2012-04-24 17:24:20 - spatialite-test] Installing spatialite-test.apk...
[2012-04-24 17:24:22 - spatialite-test] Success!
[2012-04-24 17:24:22 - spatialite-test] Launching instrumentation android.test.InstrumentationTestRunner on device 3732FBC2711300EC
[2012-04-24 17:24:22 - spatialite-test] Collecting test information
[2012-04-24 17:24:23 - spatialite-test] Test run failed: Unable to find instrumentation target package: com.mayastudios

我试图从清单中删除<instrumentation>标签,但没有起作用。

到目前为止,我让它工作的唯一方法是创建一个默认的Android项目(带有一个活动),从我的测试项目中引用它,并在<instrumentation>下使用这个默认Android项目的包名为targetPackage。但这不是我想要的。我想要一个独立的测试项目。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 14:02:08

啊,答案很简单。错误出现在测试项目的Android清单中的第3行:这里提到了错误的包。因此,更正后的清单如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mayastudios"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.mayastudios" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application android:label="Spatialite-NewApi-UnitTests">
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>

对于那些说你需要三个项目(库,在测项目,测试项目)的人:他们错了。一个库项目和一个测试项目就足够了。测试项目甚至不需要包含活动。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10301592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档