testing运行失败:无法find检测信息:ComponentInfo {} – 尝试在IntelliJ中使用Gradle进行testing的错误

每次我尝试运行testing时,控制台都会这样说:

Running tests Test running startedTest running failed: Unable to find instrumentation info for: ComponentInfo{com.employeeappv2.employeeappv2.test/android.test.InstrumentationTestRunner} Empty test suite. 

我一直坚持这一段时间,迄今为止在网上看到的解决scheme没有帮助。 我的项目结构是这样设置的:

*主模块-src * instrumentTest -java *主-java -manifest * build.gradle

我的build.gradle文件如下所示:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { minSdkVersion 16 targetSdkVersion 19 versionCode 1 versionName "2.1.0" testPackageName "login.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard- rules.txt' } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/scandit.zip') compile project(':pullToRefresh') compile 'com.android.support:appcompat-v7:19.+' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.1+' compile 'org.springframework.android:spring-android-rest-template:1.0.1+' compile 'org.json:json:20090211' compile 'com.fasterxml.jackson.core:jackson-databind:2.3.1' compile 'com.fasterxml.jackson.core:jackson-annotations:2.3.0' compile 'com.fasterxml.jackson.core:jackson-core:2.3.1' compile 'com.android.support:support-v4:19.1.+' compile 'com.mcxiaoke.volley:library:1.0.+@aar' androidTestCompile 'junit:junit:3.8' } 

你需要为你的testing目录有单独的清单吗? 如果是这样会是什么样子?

编辑:我试图添加一个清单,我的instrumentTest目录没有运气。 请注意,我无法使用IntelliJ来parsingtargetPackage名称,所以它显示为红色。

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.employeeappv2.employeeappv2.src.instrumentTest" android:versionCode="1" android:versionName="1.0.0"> <application> <uses-library android:name="android.test.runner" /> </application> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.employeeappv2.employeeappv2.src.main"/> </manifest> 

我正在使用Android Studio 1.1,以下步骤为我解决了这个问题:

  1. Run - Edit Configurations - Android Tests
    将instrumentation runner指定为android.test.InstrumentationTestRunner

  2. 然后在“Build variants”工具窗口(左侧)中,将testing工件更改为Android Instrumentation Tests

在build.gradle中不需要testInstrumentationRunner,清单文件中不需要检测标签。

当我尝试将multiDexEnabled true添加到build.gradle时,我遇到了同样的错误。

我在这里添加我的经验,因为这是第一次谷歌search时,与search... Unable to find ... ComponentInfo ...错误消息。

在我的情况下,像这样添加testInstrumentationRunner诀窍:

 ... android { ... defaultConfig { ... testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } } 

(我有com.android.tools.build:gradle:1.5.0

当我创build一个新的包时,Studio创build了一个ApplicationTest类。 以us.myname.mypackage为例,创build了以下目录结构:

 app/[myPackage]/src/androidTest/java/us/myname/mypackage/ApplicationTest.class 

最初它开箱即用。 我安装了产品口味后停止了工作。 我随后对build.gradle做了以下更改:

 defaultConfig { ... testInstrumentationRunner "android.test.InstrumentationTestRunner" } 

有些更喜欢

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

(有了我目前的configuration,我必须使用...InstrumentationTestRunner在debugging时,而AndroidJUnitRunner同时使用发布构buildtypes。)

以上configuration仅适用于debugging版本types。 如果您希望在发行版或自定义构buildtypes中使用它,可以在build.gradle中包含以下内容:

 buildTypes { release { ... } debug { ... } } testBuildType "release" 

在Studio左下angular的Build Variants选项卡中,确保您有Android Instrumentation Tests并select了正确的buildType

对于什么是值得的,当我使用常规testing运行器创build一个自定义testing运行器时,AS 2.3被挂起了。 我得到了与问题中发布相同的错误。

删除所有 Android Instrumentationtesting的debuggingconfiguration,并重build修复它。 我相信问题在于,您不再可以在debuggingconfiguration中select自定义运行程序,因为它很可能是通过gradle构build的。

我不得不把VikingGlen的答案 ,stream亭的答案和这个答案结合起来。 这个答案适用于Android Studio版本2.1。

  1. 运行 – >编辑configuration… – >常规 – >具体的仪器运行(可选):“android.support.test.runner.AndroidJUnitRunner”

  2. build.gradle (所有你的依赖关系),把这个:

    defaultConfig { testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' }

然后它可以运行这种types的testing:

 @RunWith(AndroidJUnit4.class) @LargeTest public class ApplicationTest { @Rule public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class); @Test public void login() { //Open Drawer to click on navigation. onView(withId(R.id.drawer_layout)) .check(matches(isClosed(Gravity.LEFT))) // Left Drawer should be closed. .perform(open()); // Open Drawer } } 

所以主要的问题是,当我在/ src /下创build一个androidTest文件夹时,IntelliJ没有将其作为源文件夹进行testing(java子目录应该变成绿色)。 我使用的IntelliJ 13.0.3和升级到13.1.3后,我所有的麻烦都消失了。

*注意:不要尝试添加一个清单到你的androidTest文件夹中,Gradle文档特别指出当你创buildandroidTest文件夹时清单应该被自动生成。 对我来说,问题在于文件没有被生成,因为androidTest没有被IntelliJ / Gradle识别,所以抛出了没有检测错误。

我有这个问题,并通过去运行 – >编辑configuration – >绿色'+'button在左上方修复它 – > JUnit

从那里,将'使用类pathmod'设置为'app'(或者你的默认应用程序名称,当你运行应用程序时,这个名字就是运行左边的那个)

最后,把你的testing类的名字放在'class:'文本框中。 点击应用和好吧。

此时,如果testing类没有其他错误,它应该工作。

这是我注意到我的项目,在我的应用程序(主)模块build.gradle我有以下的buildTypeconfiguration

 buildTypes { debug { multiDexEnabled true } mock { initWith(buildTypes.debug) } } testBuildType "mock" 

当我使用AndroidJUnitRunner作为testing运行器(来自Android Studio)和build.gradle中的testInstrumentationRunner时,testing运行顺利。

multiDexEnableddefaultConfig的子模块中

 defaultConfig { multiDexEnabled true .... } 

我遇到了问题

 Test running startedTest running failed: Unable to find instrumentation info for:{mypackage.xy/android.support.test.runner.AndroidJUnitRunner"} 

当我在IDE中指定AndroidJUnitRunner和子模块build.gradle。 这是通过指定MultiDexTestRunner作为IDE / build.gradle中的testing运行器来解决的。

总而言之,在build.gradle中指定multiDexEnabled为true时,使用MultiDexTestRunner运行testing,否则使用AndroidJUnitRunner作为testing运行器。

我的问题的解决scheme是更改方法名称

 @Test public void test(){ ... } 

 @Test public void testSomething(){ ... } 

希望它可以帮助别人。