Android Espresso不支持Multidex,因此“未找到测试”是怎么回事?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (51)

我的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<WelcomeActivity> mActivityRule = new  ActivityTestRule(WelcomeActivity.class);

}

这是我得到的错误:

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

提问于
用户回答回答于

我遇到了同样的问题,事实证明,你需要构建一个自定义运行程序,以启用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中需要,也可能是以前的一些版本。此选项不再存在。

扫码关注云+社区