当前位置:  开发笔记 > Android > 正文

没有使用Multidex的Android Espresso会显示"未找到测试"

如何解决《没有使用Multidex的AndroidEspresso会显示"未找到测试"》经验,为你挑选了1个好方法。

我的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中找不到测试

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



1> 小智..:

我遇到了同样的问题,事实证明你需要构建一个支持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.如果你有任何设置的东西,那么它将阻止上述工作.有关更多信息,请参阅此堆栈溢出帖子中的注释.


你的答案是有问题的,但我仍然遇到问题:错误:任务执行失败':app:transformClassesWithMultidexlistForDebugAndroidTest'.> com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_75 .jdk/Contents/Home/bin/java''以非零退出值1结束
这个答案应该被接受.
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有