代码之家  ›  专栏  ›  技术社区  ›  gurehbgui

找不到类“android.support.test.runner.AndroidJUnitRunner”

  •  8
  • gurehbgui  · 技术社区  · 6 年前

    我正在尝试使用一个工具化的测试,我将我的项目更新为AndroidX。但在尝试运行时出现以下错误:

    2018-10-09 14:22:29.468 13263-13263/xxx.yyy E/AndroidRuntime: FATAL EXCEPTION: main
        Process: xxx.yyy, PID: 13263
        java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{xxx.yyy.test/android.support.test.runner.AndroidJUnitRunner}: java.lang.ClassNotFoundException: Didn't find class "android.support.test.runner.AndroidJUnitRunner" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5730)
            at android.app.ActivityThread.-wrap1(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
            at android.os.Handler.dispatchMessage(Handler.java:105)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6541)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
         Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.test.runner.AndroidJUnitRunner" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5728)
            at android.app.ActivityThread.-wrap1(Unknown Source:0) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661) 
            at android.os.Handler.dispatchMessage(Handler.java:105) 
            at android.os.Looper.loop(Looper.java:164) 
            at android.app.ActivityThread.main(ActivityThread.java:6541) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
    

    我的测试是这样的:

    package xxx.yyy;
    
    import android.content.Context;
    import androidx.test.InstrumentationRegistry;
    import androidx.test.runner.AndroidJUnit4;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    import static org.junit.Assert.*;
    
    /**
     * Instrumented test, which will execute on an Android device.
     *
     * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
     */
    @RunWith(AndroidJUnit4.class)
    public class ExampleInstrumentedTest {
        @Test
        public void useAppContext() {
            // Context of the app under test.
            Context appContext = InstrumentationRegistry.getTargetContext();
    
            assertEquals("xxx.yyy", appContext.getPackageName());
        }
    }
    
    2 回复  |  直到 6 年前
        1
  •  21
  •   ʍѳђઽ૯ท    6 年前

    android.support支持

    您迁移到 AndroidX 但正如你所见, 属于 android.support 项目中的测试库。

    要解决这个问题,您应该在项目的任何地方搜索 android.support支持 并将其更换或移除以供使用 安卓利德

        2
  •  53
  •   Stefan    6 年前

    内部 build.gradle 在那里你可以找到 defaultConfig testInstrumentationRunner 属性可以指定相应的测试运行程序。那里有一个来自 android.support 可能指定了包:

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

    这必须从 androidx

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    
        3
  •  17
  •   Daniil    4 年前

    当我忘记向android测试运行程序添加依赖项时,我也遇到了同样的问题。

    androidTestImplementation("androidx.test:runner:1.2.0")
    
        4
  •  1
  •   Dino Tw    4 年前

    我失踪了

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0

    对我来说