升级到Java 8和构建工具版本25后,Android测试用例失败

我有一堆运行正常的测试用例.但是,一旦我的项目更新为构建工具版本25并且Java已更新为JDK 1.8,我的所有测试用例都会失败.

当我运行我的测试时,我使用./gradlew cAT,我收到错误消息:

由于’java.lang.NullPointerException’导致检测运行失败
com.android.builder.testing.ConnectedDevice>没有发现任何测试.[Nexus 6 – 6.0.1]失败

要么

对Nexus 6 – 6.0.1的测试失败:由于’java.lang.classNotFoundException’导致仪表运行失败

com.android.builder.testing.ConnectedDevice>没有发现任何测试.[Nexus 6 – 6.0.1]失败

我的build.gradle有以下几行:

androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'

知道解决方案可能是什么?

更新:

当我尝试使用./gradlew -cAT -s从gradle运行相同的操作时,我看到以下异常:

引起:java.lang.NoClassDefFoundError:org / gradle / logging / ConsoleRenderer
        在com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask.runTests(DeviceProviderInstrumentTestTask.java:140)
        在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:228)
        在org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
        在org.gradle.api.internal.AbstractTask $TaskActionWrapper.execute(AbstractTask.java:621)
        在org.gradle.api.internal.AbstractTask $TaskActionWrapper.execute(AbstractTask.java:604)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ……还有68个

谷歌搜索告诉我,这可能是一个特殊问题,但我的测试在同一个gradle版本中运行良好.

解决方法:

事实证明,在我的基本上下文初始化期间,根本原因是一个空指针!

我的学习:

>无论我们使用IDE还是gradle来运行测试用例,他们最终都会调用am instrumentation命令(https://developer.android.com/studio/test/command-line.html).
>运行命令adb shell am instrument -w -r -e debug true -e class(注意我已将debug设置为true).
>同时,让你的adb logcat运行.这告诉我为什么我遇到了NPE.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐