没有使用Multidex的Android Espresso会显示“未find测试”

我的Espresso测试一直在运行,直到我不得不支持multidex。

我的build.gradle,我有

minSdkVersion 14 targetSdkVersion 23 multiDexEnabled = true testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1' androidTestCompile 'com.android.support.test:runner:0.4.1' androidTestCompile 'com.android.support.test:rules:0.4.1' dexOptions { jumboMode true javaMaxHeapSize "4g" incremental true } 

Test1AuthenticationEspressoTest

 @RunWith(AndroidJUnit4.class) @SmallTest public class Test1AuthenticationEspressoTest { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule(WelcomeActivity.class); } 

这是我得到的错误

junit.framework.AssertionFailedError:在com.livestrong.tracker.test.Test1AuthenticationEspressoTest中找不到测试

任何帮助将不胜感激。 有人使用浓缩咖啡吗?

我遇到了同样的问题,事实certificate你需要构建一个支持MultiDex并从AndroidJUnitRunner扩展的自定义运行器。 然后,您需要将该运行器设置为build.gradle中的testInstrumentationRunner,并将其设置为运行配置中的运行器。 无需修改测试类(保留@RunWith(AndroidJunit4.class) )。

以下是如何做的一步一步:

  1. 为自定义运行器创建一个类:

     package com.bla.bla.bla; // your package import android.os.Bundle; import android.support.multidex.MultiDex; import android.support.test.runner.AndroidJUnitRunner; public class CustomTestRunner extends AndroidJUnitRunner { @Override public void onCreate(Bundle arguments) { MultiDex.install(getTargetContext()); super.onCreate(arguments); } } 
  2. 在build.gradle中,将跑步者设置为自定义跑步者:

     android { // ... defaultConfig { // ... testInstrumentationRunner "com.bla.bla.bla.CustomTestRunner" } } 
  3. 在运行配置中, 确保检测运行器也设置为同一个运行器。 。 注意: Android Studio 3.x以及某些以前的版本可能不需要此步骤。 此选项不再存在。

使用上面的代码,我能够在支持多人dex的应用程序上运行Espresso测试。

我应该注意网上关于这个主题的许多其他post,建议将你的跑步者设置为com.android.test.runner.MultiDexTestRunner并在你的构建中的com.android.support:multidex-instrumentation:1.0.1中删除一些依赖项。 gradle这个。 该解决方案似乎不再是这种情况,并且不适用于gradle 1.5.0。 如果你有任何设置,那么它将阻止上述工作。 有关更多信息,请参阅此堆栈溢出post中的注释。