AWS Device Farm - java.lang.ClassNotFoundException:未找到类“androidx.test.runner.AndroidJUnitRunner”

问题描述

美好的一天!我正在尝试使用 AWS Device Farm 进行仪器测试。但对于某些设备,我收到此错误

02-17 19:22:26.157 15281 15281 E AndroidRuntime: FATAL EXCEPTION: main
02-17 19:22:26.157 15281 15281 E AndroidRuntime: Process: com.mobilesense.myapplication,PID: 15281
02-17 19:22:26.157 15281 15281 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{com.mobilesense.myapplication.test/androidx.test.runner.AndroidJUnitRunner}: java.lang.classNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib64,/vendor/lib64]]
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5956)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.app.ActivityThread.-wrap3(ActivityThread.java)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1727)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:154)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:6823)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
02-17 19:22:26.157 15281 15281 E AndroidRuntime: Caused by: java.lang.classNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[],/vendor/lib64]]
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at java.lang.classLoader.loadClass(ClassLoader.java:380)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at java.lang.classLoader.loadClass(ClassLoader.java:312)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5954)
02-17 19:22:26.157 15281 15281 E AndroidRuntime:    ... 8 more

我的应用级gradle链接

...

android {
    compileSdkVersion 30
    buildToolsversion "29.0.3"

    defaultConfig {
        applicationId "com.signalsense.signalsenseapp"
        minSdkVersion 22
        targetSdkVersion 30
        versionCode 66
        versionName "0.60"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        testInstrumentationRunnerArguments clearPackageData: 'true'
    }

    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinoptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}

dependencies {
    ...
    //Instrumented tests
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    androidTestImplementation 'androidx.test:runner:1.3.0'
    androidTestUtil 'androidx.test:orchestrator:1.3.0'
    androidTestImplementation 'androidx.test:rules:1.3.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

我的测试课程的一部分:

@LargeTest
@RunWith(AndroidJUnit4ClassRunner::class)
class AppTest {
    @Rule
    @JvmField
    val rule = ActivityScenarioRule(SplashActivity::class.java)

    @Rule
    @JvmField
    var mGrantPermissionRule =
        GrantPermissionRule.grant(
            "android.permission.READ_PHONE_STATE","android.permission.INTERNET","android.permission.ACCESS_NETWORK_STATE","android.permission.ACCESS_FINE_LOCATION","android.permission.ACCESS_WIFI_STATE"
        )

    @Test
    fun testApp() {
     ...
    }
}

我完全不明白为什么 AWS Device farm 甚至无法启动应用程序并失败。其他一些 AWS 设备通过测试正常。所有本地设备和模拟器也可以通过此测试。 请帮忙!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)