我有一堆运行正常的测试用例。但是,一旦我的项目更新为构建工具版本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版本中运行良好。
答案 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。