Android Studio中导入现有的单元测试“无法找到仪器仪表资讯”(Android Studi

2019-09-03 18:44发布

所以我想我们的Android Studio和测试,在日食工作的项目。 我得到的一切编译和应用程序将启动就好了,但我不能让我的单元测试,并正在运行。 我最终得到了他们加入我的应用程序li​​b文件夹作为依赖编译,但我不认为我的运行配置是正确的,因为每当我跑我的测试中,我得到这个错误

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中的状态已经改变了很多,因为我最初发布这个问题,但许多乐于助人的人继续张贴此错误的特定解决方案。 我建议通过活跃的排序和首先检查了最新的答案。

Answer 1:

如果你在你所定义的testInstrumentationRunner build.gradle像这样:

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

确保在运行配置窗口中,您使用完全相同的“特定仪器亚军”在你的Android工作室/的IntelliJ运行配置为您的测试。



Answer 2:

在我的情况下,解决办法是:

  • 视图>工具窗口>生成变种
  • 选择*调试版本


Answer 3:

说明和解决方案

如果targetPackage在测试应用程序的清单中声明该错误“ 无法找到仪器 ”是出现在应用程序的清单中声明的包不同的被测试:

  • 应用程序进行测试:

     <manifest package="com.example.appbeingtested" … > 
  • 测试应用程序:

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


Answer 4:

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

android.test.InstrumentationTestRunner 

com.android.test.runner.MultiDexTestRunner

在EditConfigurations - >具体仪表转轮(可选)选项卡。

原来,因为我的应用程序使用MultiDex,我需要改变测试运行,以MultiDexTestRunner为好。

更新:

正如@丹评论, InstrumentationTestRunner不赞成使用AndroidJUnitRunner代替。



Answer 5:

在我的情况下运行/调试配置错了。

一个解决办法:

  1. 转到运行/调试配置

    运行- >编辑配置...

  2. 安装一个Android的测试为测试类

  3. 选择左侧的Android测试配置
    或创建一个新的与加号图标并将其命名为如类名测试

  4. 选择包含您的测试类的模块。 在最简单的情况下,测试类是您的应用程序模块,使选择的应用程序英寸

  5. 选择下一行的测试配置。 我用:

    • 类别 :运行一个类中的所有测试。
  6. 选择您的测试类

  7. 最后配置您的目标设备,然后选择确定。



Answer 6:

在AndroidStudio版本这只能<2.3

在我的情况下,错误的仪器亚军被选中。

我通过指定在测试的运行/调试配置(见下文)的仪表转轮固定这一点。 在那里,你可以从列表中选择一个亚军。

你会发现运行/调试配置: 运行- >编辑配置...



Answer 7:

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

仍然没有运气。

术后第2天的调查,我发现问题是由移动电话创建。 .V。

我原来用小米手机4i作为测试设备(植根)和测试无法运行。 当然,我得到了下面的错误。

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

然而,当我使用索尼XPERIA Z3(无根),一切正常。



Answer 8:

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

  1. 打开AndroidManifest.xml中,并检查它有

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

如果NO下一步:

  1. 重新组织你的目录结构下列之一:(这是从recomendation 官方源 )
        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. 你看,你需要有内部测试模块。
    对于理念IDE创建它下一步做文件- >新建模块- >测试模块 。 创建你可以看到一个新的AndroidManifest.xml后。 它具有仪器的声明中。


Answer 9:

有一次,我得到这个错误。 我使用SDK工具CLI模式。 当我在测试项目中推出“蚂蚁测试”发生的错误。 后来我才发现,我甚至没有建立和之前安装的测试项目! (用“蚂蚁调试安装”),所以你应该尝试检查正在运行的配置,看看测试项目得到了运行测试之前有效地构建。 对于其他情况下,Android的工作室使用摇篮。 我不知道它很好,但尝试检查摇篮设置项目或摇篮设置文件。



Answer 10:

对我来说,这个问题是有这种依赖关系:

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

之后,我删除它发现我的测试中,并再次运行。

请注意,我没有得到“无法找到仪器”的消息,但“无测试发现”的消息。



Answer 11:

它原来是一个延迟的问题。 之后我等了一会儿阅读的互联网解决方案,它会自动固定。 我重新编译的代码,它的工作。



Answer 12:

由于没有这些答案的帮助我,我想分享我的人谁是绝望,因为我是解决方案。 :)

因为我用的是测试库,我需要通过增加使multidex支持multiDexEnabled true我的摇篮建设。 我不知道我有multidex支持全面实施开始与固定的错误,但最终,我没有最终需要它和删除我的构建该行(这样做,因为我上次来实现它,它已经改变了的正确方法) 。 我的团队在工作中不得不与启用multidex支持......在典型的Android风格的几个测试问题。



Answer 13:

在我在同一类情况下,一些测试用例中挑选正确的测试运行(android.support.test.runner.AndroidJUnitRunner),其定义的build.gradle和一些测试例拿起android.test.InstrumentationTestRunner,这是没有定义至少在清单或的build.gradle或编辑配置。 理想情况下,应已随Gralde选项解决由同步项目,但没有奏效。

最后我找到对抗的方法定义错误的测试运行.idea/workspace.xml ,我手动更改它,问题得到了解决。

一般来说,我们不应该修改这个Android Studio中生成的文件,但对我来说没做过最后的选择。



Answer 14:

就我而言,这个问题是设备太。 其他设备都工作正常。 简单卸载后重新安装固定它。



Answer 15:

这个答案是要解释历史问题和总结所有相关设置。

基本上有用于检测测试工具配置3个可能的地方。

  1. 在EditConfigurations - >常规选项卡 - >特殊仪器亚军(可选)
    这是Android Studio 2.2中和版本之前只存在,在最新版本中,它已经被删除。

  2. 清单文件,测试转轮配置如下。

    < instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
           android:targetPackage="com.mytestapp.test"/>

由于“android.test.InstrumentationTestRunner” API等级24已被弃用,该设置也没有必要则已,只要你在配置文件中的gradle亚军。
如果您想保留此设置,请确保亚军名称应与您在gradle这个文件中设置的一个,否则你会得到这个错误也。

  1. 在gradle这个文件。
    这是,如果你使用上面的Android V2.3工作室的唯一推荐的方式。
    android {
    .......
        defaultConfig {  
            .......  
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  
        }   
    }


文章来源: Android Studio import existing unit tests “Unable to find instrumentation info”