运行 robolectric 时出现未知错误

Posted

技术标签:

【中文标题】运行 robolectric 时出现未知错误【英文标题】:Unknown error when running robolectric 【发布时间】:2014-09-16 11:40:44 【问题描述】:

我是 robolectric 的新手,我只想运行简单的测试。

我使用 android Studio => Gradle

当我运行我的示例测试时

@RunWith(RobolectricTestRunner.class)
public class ExampleTest extends InstrumentationTestCase 

@Test
public void test() throws Exception 
    final int expected = 5;
    final int reality = 5;
    assertEquals(expected, reality);


使用渐变

 ./gradlew clean test --stacktrace

我遇到了异常

test.ExampleTest > 测试失败 java.lang.RuntimeException 引起:java.lang.NullPointerException 1 次测试完成,1 次失败 :app:testDebug 失败 FAILURE:构建失败并出现异常。 * 什么地方出了错: 任务“:app:testDebug”执行失败。 > 有失败的测试。请参阅报告:file:///Users/gburanov/code/mobile/Medoo.Android/app/build/test-report/debug/index.html * 尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。 * 例外情况是: org.gradle.api.tasks.TaskExecutionException:任务':app:testDebug'的执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 在 org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86) 在 org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) 在 org.gradle.execution.DefaultBuildExecuter.access $200(DefaultBuildExecuter.java:23) 在 org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) 在 org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54) 在 org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166) 在 org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113) 在 org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64) 在 org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 在 org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)

如何找到真正的错误来源? Nullpoint 异常在哪里?

【问题讨论】:

【参考方案1】:

对于 Robolectric,您不应扩展 InstrumentationTestCase。

【讨论】:

那我应该扩展什么? 你不必扩展任何东西。【参考方案2】:

这应该是您获得更多失败细节的途径:

file:///Users/gburanov/code/mobile/Medoo.Android/app/build/test-report/debug/index.html

【讨论】:

以上是关于运行 robolectric 时出现未知错误的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 打开时出现未知错误

颤振运行时出现:app:processDebugResources的一些未知错误

设置 innerhtml 时出现 IE 未知运行时错误

错误:尝试运行 ionic cordova run android 时出现未知标志“p”

当我尝试运行使用 CodeIgniter 编写的项目时出现 Xampp 未知错误

运行QML时出现“未知方法参数类型”错误