如何解决Android Instrumentation测试在Firebase Test Lab上崩溃,但在本地运行良好
我们最近开始在我们的应用程序中添加Espresso仪器测试,我正在尝试在CircleCI上设置测试的夜间运行。我让Circle部分开始工作,并且按预期在Firebase Test Lab上触发了测试,但是每次出现以下情况,测试运行程序都会崩溃:
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/swing/tree/DefaultTreeCellRenderer;
FATAL EXCEPTION: Instr: androidx.test.runner.AndroidJUnitRunner
Process: [REDACTED],PID: 10933
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/swing/tree/DefaultTreeCellRenderer;
at java.lang.class.classForName(Native Method)
at java.lang.class.forName(Class.java:453)
at androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:72)
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:793)
at androidx.test.runner.AndroidJUnitRunner.buildrequest(AndroidJUnitRunner.java:547)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:390)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2075)
Caused by: java.lang.classNotFoundException: Didn't find class "javax.swing.tree.DefaultTreeCellRenderer" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar",zip file "/system/framework/android.test.mock.jar",zip file "/data/app/[REDACTED]/base.apk",zip file "/data/app/[REDACTED]/base.apk"],nativeLibraryDirectories=[/data/app/[REDACTED]/lib/arm64,/data/app/[REDACTED]/lib/arm64,/data/app/[REDACTED]/base.apk!/lib/arm64-v8a,/system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.classLoader.loadClass(ClassLoader.java:379)
at java.lang.classLoader.loadClass(ClassLoader.java:312)
... 8 more
我们确实将这些包含在我们的build.gradle
中:
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
什么可能导致该异常?
在https://console.firebase.google.com/中手动使用Firebase测试实验室Web GUI时遇到相同的问题
无论是在Android Studio中还是在adb shell am instrument -w -r -e debug false -e package '[REDACTED]' [REDACTED].debug.test/androidx.test.runner.AndroidJUnitRunner
上,测试都可以在本地正常运行。
解决方法
对于我们的特殊情况,它是通过在--environment-variables
命令中使用gcloud firebase test android run
来设置测试包(我们的应用程序包后跟.test
)和{{1 }}。像这样:
debug=false
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。