无法找到检测目标包:com.xyz

时间:2012-04-16 10:44:42

标签: android junit

我为一个库项目编写了一个测试用例类,我分别创建了这个测试用例项目。

当我尝试运行此测试项目时。控制台显示错误"Unable to find instrumentation target package: <with package name>"

我也在谷歌搜索解决方案,在他们提供的一些网站上检查AndroidManifestFile中的标签android:targetPackage属性。

我检查了清单,检测标签是否正确,它正确定位了libraryproject包。

任何人都可以帮忙,让我的testcase项目可以运行

3 个答案:

答案 0 :(得分:24)

您必须创建和设置依赖于Library Project的Application Project,以便测试Library Project。引自official developer's guide

  

测试图书馆计划

     

有两种建议的方法可以在库项目中设置代码和资源的测试:

     
      
  • 您可以设置一个测试应用程序项目的测试项目   这取决于图书馆项目。然后,您可以添加测试   针对图书馆特定功能的项目。

  •   
  • 您可以设置一个依赖于库的标准应用程序项目,并将检测项目放入该项目中。这使您可以创建一个包含测试/工具和要测试的代码的自包含项目。

  •   

Android库项目不是直接构建的,而是与主应用程序项目一起构建的。换句话说,您无法直接将其编译为自己的.apk并在Android设备上运行它。另一方面,在设备上安装app.apk和test.apk之后,通过运行测试项目应用程序(在Eclipse中运行“Run As ...”&gt;“Android JUnit Test”)进行检测测试,然后使用test.apk来操作app.apk--因此是测试名称的“instrumentation”部分。


<强>更新

请注意,如果您使用第二种方法,则可以创建测试项目测试库项目而无需创建第三个应用程序项目,因为测试项目本身也是常规应用程序项目。

答案 1 :(得分:11)

当你创建android测试项目时,记得设置好的目标包

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test" <-------------------
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.test" >  <-----------------
    </instrumentation>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
        <activity android:name="TestActivity" />
    </application>
</manifest>

答案 2 :(得分:4)

在我的情况下,我使用gradle运行,只运行connectedInstrumentTest任务

./gradlew connectedInstrumentTest

我得到了“无法找到仪器信息”错误... 问题是我还需要在connectedInstrumentTest任务之前包含要执行的installDebug任务,如下所示:

./gradlew installDebug connectedInstrumentTest