升级到Java 8并构建工具版本25

时间:2016-11-03 18:27:41

标签: android gradle junit java-8 android-instrumentation

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

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

由于&java; Lang.lang.OullPointerException'检测运行失败 com.android.builder.testing.ConnectedDevice>没有发现任何测试。[Nexus 6 - 6.0.1] FAILED

或者

对Nexus 6 - 6.0.1的测试失败:由于&java; Lang.ClassNotFoundException'

,测试运行失败

com.android.builder.testing.ConnectedDevice>没有发现任何测试。[Nexus 6 - 6.0.1] FAILED

我的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版本中运行良好。

1 个答案:

答案 0 :(得分:0)

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

我的学习:

  • 无论我们使用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。

相关问题