我的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 }
@RunWith(AndroidJUnit4.class) @SmallTest public class Test1AuthenticationEspressoTest { @Rule public ActivityTestRulemActivityRule = new ActivityTestRule(WelcomeActivity.class); }
这是我得到的错误
junit.framework.AssertionFailedError:在com.livestrong.tracker.test.Test1AuthenticationEspressoTest中找不到测试
任何帮助将不胜感激.有人使用浓缩咖啡吗?
我遇到了同样的问题,事实证明你需要构建一个支持MultiDex并从AndroidJUnitRunner扩展的自定义运行器.然后,您需要将该运行器设置为build.gradle中的testInstrumentationRunner,并将其设置为运行配置中的运行器.无需修改测试类(保留@RunWith(AndroidJunit4.class)
).
以下是如何做的一步一步:
为自定义运行器创建一个类:
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); } }
在build.gradle中,将运行器设置为自定义运行器:
android { // ... defaultConfig { // ... testInstrumentationRunner "com.bla.bla.bla.CustomTestRunner" } }
在运行配置中,确保检测运行器也设置为同一个运行器..注意: Android Studio 3.x以及某些先前版本不需要此步骤.此选项不再存在.
使用上面的代码,我能够在支持多人dex的应用程序上运行Espresso测试.
我应该注意网上关于这个主题的许多其他帖子,建议设置你的跑步者com.android.test.runner.MultiDexTestRunner
并在build.gradle中排除一些依赖关系com.android.support:multidex-instrumentation:1.0.1
.该解决方案似乎不再是这种情况,并且不适用于gradle 1.5.0.如果你有任何设置的东西,那么它将阻止上述工作.有关更多信息,请参阅此堆栈溢出帖子中的注释.