Android Studio导入现有unit testing“无法find检测信息”
所以我正在尝试我们的Android Studio并testing一个在eclipse中工作的项目。 我得到了一切编译和应用程序将推出很好,但我不能让我的unit testing和工作。 我最终通过添加我的应用程序lib文件夹作为依赖项来编译他们,但我不认为我的运行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
-
转到运行/debuggingconfiguration
运行 – >编辑configuration…
-
为您的testing类设置一个Androidtesting
-
在左侧select您的Androidtestingconfiguration
或者用加号图标创build一个新名称,例如ClassName Test -
select包含您的testing类的模块。 在最简单的情况下,testing类是在你的应用程序模块,所以select应用程序 。
-
在下一行select您的testingconfiguration。 我用:
- 类 :运行一个类的所有testing。
-
select你的testingclass
-
最后configuration你的目标设备,并select确定。
这只适用于AndroidStudio版本<2.3
在我的情况下,select了错误的仪表运动员。
我通过在testing的运行/debuggingconfiguration中指定工具运行器来解决这个问题(见下文)。 在那里你可以从列表中select一个跑步者。
您可以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(没有根),一切运作良好。
它接缝你没有好的项目结构。
-
打开AndroidManifest.xml并检查它是否有
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.YourClass" android:label="Tests for com.example.YourClass"/>
如果没有下一步:
- 重新组织你的目录结构如下:(这是从官方来源的推荐)
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)
- 你看到你需要有内部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生成的文件,但对我来说,它确实是最后一个选项。
- IntelliJ / Android Studio中一个文件错误的文件关联
- Android Studio快速文档总是“获取文档”
- 在使用intellij的设备上INSTALL_FAILED_CPU_ABI_INCOMPATIBLE
- Android Studio TransformException:错误:任务执行失败':app:transformClassesWithDexForDebug'
- 导入NotNull或Nullable和Android Studio不会编译
- 如何在Android Studio中查看所有TODO任务?
- Android Studio:如何附加javadoc
- 如何将新的活动添加到Android Studio中的现有项目?
- 在App Engine模块之间共享实体