Android Studio导入现有unit testing“无法find检测信息”

所以我正在尝试我们的Android Studio并testing一个在eclipse中工作的项目。 我得到了一切编译和应用程序将推出很好,但我不能让我的unit testing和工作。 我最终通过添加我的应用程序li​​b文件夹作为依赖项来编译他们,但我不认为我的运行configuration是正确的,因为每当我运行我的testing时,我得到这个错误

Installing <packagename> DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/<packagename>" pkg: /data/local/tmp/<packagename> Success Running tests Test running started Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner} Empty test suite. 

编辑:对于所有新来的人来说,自从我最初发布这个问题以来,Android Studio的状态已经发生了很大的变化,但是许多有帮助的人仍然继续为这个错误发布他们特定的解决scheme。 我build议通过激活sorting,并检查出最新的答案。

如果你在你的build.gradle中定义了一个testInstrumentationRunner,例如:

 android { defaultConfig { testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 

请确保在运行configuration窗口中,在您的Android Studio / IntelliJ运行configuration中使用完全相同的“Specific instrumentation runner”来进行testing。

就我而言,解决scheme是:

  • 查看>工具窗口>构build变体
  • select一个*debugging变体

解释和解决scheme

如果testing应用程序的清单中声明的​​targetPackage与正在testing的应用程序的清单中声明的​​包不同,则会出现此错误“ 无法find检测

  • 正在testing的应用:

     <manifest package="com.example.appbeingtested" … > 
  • testing申请:

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

我通过改变解决了这个问题

 android.test.InstrumentationTestRunner 

 com.android.test.runner.MultiDexTestRunner 

在EditConfigurations – > Specific Instrumentation Runner(可选)选项卡中。

原来,因为我的应用程序正在使用MultiDex,我还需要将testing运行器更改为MultiDexTestRunner。

更新:

至于@dan的评论, InstrumentationTestRunner反而不赞成使用AndroidJUnitRunner

在我的情况下运行/debuggingconfiguration是错误的。

一个解决scheme

  1. 转到运行/debuggingconfiguration

    运行 – >编辑configuration…

  2. 为您的testing类设置一个Androidtesting

  3. 在左侧select您的Androidtestingconfiguration
    或者用加号图标创build一个新名称,例如ClassName Test

  4. select包含您的testing类的模块。 在最简单的情况下,testing类是在你的应用程序模块,所以select应用程序

  5. 在下一行select您的testingconfiguration。 我用:

    • :运行一个类的所有testing。
  6. select你的testingclass

  7. 最后configuration你的目标设备,并select确定。

这只适用于AndroidStudio版本<2.3

在我的情况下,select了错误的仪表运动员。

我通过在testing的运行/debuggingconfiguration中指定工具运行器来解决这个问题(见下文)。 在那里你可以从列表中select一个跑步者。 1]

您可以find运行/debuggingconfiguration: 运行 – >编辑configuration…

我有@Iuliia Ashomok同样的问题,并尝试在互联网上的一切。

仍然没有运气。

经过2天的调查,我发现问题是由手机造成的。 .V。

我最初使用小米Mi4i作为testing设备(根),testing不能运行。 当然,我得到了下面的错误。

 Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner} 

但是,当我使用索尼Xperia Z3(没有根),一切运作良好。

它接缝你没有好的项目结构。

  1. 打开AndroidManifest.xml并检查它是否有

     <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.YourClass" android:label="Tests for com.example.YourClass"/> 

如果没有下一步:

  1. 重新组织你的目录结构如下:(这是从官方来源的推荐)
  MyProject/ AndroidManifest.xml res/ ... (resources for main application) src/ ... (source code for main application) ... tests/ AndroidManifest.xml res/ ... (resources for tests) src/ ... (source code for tests) 
  1. 你看到你需要有内部testing模块。
    要在Idea IDE中创build它,请执行下一个文件 – >新build模块 – >testing模块 。 创build完成后,您可以看到一个新的AndroidManifest.xml。 它里面有仪器声明。

我曾经有这个错误。 我在CLI模式下使用sdk工具。 当我在testing项目中启动“ant test”时发生错误。 后来我注意到,我甚至没有构build和安装testing项目! (使用'ant debug install')所以你应该试着检查你的运行configuration,看运行testing之前testing项目是否得到了有效的构build。 对于另一种情况,Android Studio使用Gradle。 我不太了解,但尝试检查项目或Gradle设置文件的Gradle设置。

对我来说,问题是有这种依赖性:

 debugCompile 'com.android.support.test:rules:0.2' 

我删除后,我的testing被发现并再次运行。

请注意,我没有得到“无法find检测仪”的消息,但没有find“没有testing”的消息。

原来是一个延迟问题。 我等了一会儿才看到互联网解决scheme后自动修复。 我重新编译了代码,它工作。

由于这些答案都没有帮助我,所以我想分享我的解决scheme给任何像我一样绝望的人。 🙂

由于我正在使用的testing库,我需要通过添加multiDexEnabled true到我的Gradle构build来启用multidex支持。 我不确定我是否已经完全实现了multidex支持(自从我上次实现它以来,正确的方式已经发生了变化),但是最终,我并没有最终需要它,并从我的构build中删除该行修复了错误。 我的团队在工作中遇到了一些与启用multidex支持有关的testing问题…在典型的Android风格。

在我的情况下,在同一个类中,一些testing用例正在挑选在build.gradle中定义的正确testing运行器(android.support.test.runner.AndroidJUnitRunner),并且一些testing用例正在拾取未定义的android.test.InstrumentationTestRunner至less在清单或build.gradle或编辑configuration。 理想情况下,它应该已经通过Sync Project与Gralde选项解决,尽pipe它没有工作。

最后我发现在.idea/workspace.xml中的一个方法中定义了错误的testing运行器,我手动改变了它,问题得到了解决。

一般来说,我们不应该编辑这个Android Studio生成的文件,但对我来说,它确实是最后一个选项。