问题标签 [robolectric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1003 浏览

android - Android 从 Ant 启动 Robolectric 单元测试?

我一直在将 Robolectric 和 Ant 或 Maven 集成在一起,尽管 Ant 更可取,因为它更接近 Android SDK。

一切都在 eclipse 中工作。Robolectric 链接和单元测试运行,但是当我尝试从命令行运行和构建测试时,它似乎不起作用。

使用实际的 Robolectric 示例应用程序,我尝试同时进行 maven 和 ant 构建。

使用 ant 构建成功,但测试全部失败。

Maven 输出

蚂蚁测试输出

示例的编译和链接似乎很好,但仍然有很多测试失败。我认为如果这些样本工作正常,它们应该 100% 成功。

任何人都可以阐明其中的奥秘吗?我是否可以在我的构建脚本中包含 junit 和 robolectric 测试,或者这是由于 android 构建系统几个月前进行了这些更改而没有得到正确支持的东西。

0 投票
1 回答
1688 浏览

android - 使用 Robolectric 和 ANT 进行测试

我正在努力在连续构建环境中设置 Robolectric,但我在设置它时遇到了一些问题。

我的 android Eclipse 项目结构由一个 android 项目和一个 JUnit4 测试项目组成,如 Robolectric “Eclipse 快速入门”快速指南中所述。我的示例测试在 Eclipse 中运行良好,但我还需要能够使用 ant 进行测试。我将如何构建我的 ANT build.xml 来支持这一点?以及我应该如何应用与 Eclipse 测试项目相同的更改?

我一直在研究 RobolectricSample 项目的 build.xml 文件,但它由一个项目组成,生产和测试代码都位于项目 src 文件夹下。我知道这就是 maven 假设事情的方式(???),但我只想选择 ANT。

0 投票
2 回答
981 浏览

android - Roboelectric 与 android 中的数据库

有没有人尝试过用 roboelectric 测试数据库?我必须传递上下文来创建数据库,但我不知道如何注入它!

谢谢!

0 投票
4 回答
17305 浏览

java - 为 Robolectric 的 SharedPreferences 提供测试数据

刚开始使用 Robolectric,它似乎正是我所需要的。但是,我在使用 SharedPreferences 方面遇到了一些障碍。

我有两个测试用例

  1. Activity 需要一个新的/空的 sharedPreferences

  2. Activity 期望 sharedPreferences 中已经包含一些数据

对于测试用例 1,测试按预期通过,一切都很好:)

但是,对于测试用例 2,我似乎无法找到一种向 Robolectric 提供一些假数据的好方法,因此 Activity 能够访问这些假数据。

这感觉像是一个非常常见的用例,但我似乎无法弄清楚该怎么做!

0 投票
1 回答
7018 浏览

java - 使用 PowerMock 和 Mockito 的受保护构造函数测试类

我有以下课程要测试:

但是使用这个测试:

由于“obtainedResult1 = challengeMock.toStrings();”,我得到了 NullPointerException 返回null。

我使用带有规则的在 Robolectric 中运行的 PowerMock + Mockito(因为它是一个 Android 项目)。

哪里有问题?

0 投票
1 回答
477 浏览

unit-testing - 如何在 IntelliJ 中设置 Robolectric?

我知道这里有说明,但我根本不清楚。我有一个使用 ANT 构建的现有项目,所以我不是 Mavenized,也不是从头开始。带有屏幕截图的很棒的教程会很棒,因为我确定我不是唯一遇到此问题的人。

0 投票
1 回答
467 浏览

android - 使用 RoboGuice + Robolectric 测试 RadioGroup 时遇到问题

我已经用很多不同的方式看了这个,我只剩下了一点头发,我想我会把它放在那里,希望有人已经尝试过了。

我正在尝试为启用 Roboguice 的活动编写 Robolectric 测试。具体来说,我正在尝试编写确保 RadioGroup 行为的测试。

问题在于,在运行测试时,RadioGroup 不像 RadioGroup 并强制执行一次只检查一个 RadioButton 的行为。我可以通过断言和调试器看到我可以一次检查组中的所有三个按钮。

RadioGroup 非常简单:

然后我应该指出我运行应用程序的行为,行为是我所期望的(如果我单击任何一个单选按钮,只有一个保持选中状态,而其他两个未选中)。所以,理论上,这个测试应该通过:

但是,最后一个断言失败了,调试器确认第一个按钮 whenToday 保持选中状态。

这是完整的测试类:

我已经尝试了我能想到的每一种不同的方式。我觉得我在做一些愚蠢的事情或缺少一些基本概念。请帮忙!

安德鲁

0 投票
1 回答
870 浏览

java - Robolectric 打印日志或控制台消息

我用 Robolectric 写了一个小测试。有一个问题 - 没有消息写入测试控制台。在经过测试的代码中有很多类似的代码

或者

但无论如何,没有输出。

0 投票
6 回答
14386 浏览

java - 使用 Robolectric + Roboguice 时将日志输出写入哪里?

我正在使用 Robolectric 来测试 Android。我正在通过 Maven 运行我的测试,例如

如果我有写入日志的代码,例如

或使用 Roboguice 的Ln

我在 Maven 的安全日志(文本文件)中看不到任何输出。

理想情况下,我实际上想要简单的日志语句进入控制台。我可以使用 写入控制台System.out.println("blah"),但当然我更愿意使用受支持的日志记录 API。

所以我的问题是,为什么我根本看不到日志输出,我怎样才能将日志消息写入控制台?

0 投票
3 回答
6879 浏览

android - 加载 JNI 库的应用程序对象上的 Robolectric 坦克。我可以得到解决方法吗?

我的 Android 应用程序的Application对象加载了一个 JNI 库,而 Robolectric 似乎不喜欢这样。当我去运行我的测试时,Robolectric 胡扯了,我得到了这个堆栈跟踪:

java.lang.UnsatisfiedLinkError: java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 处 java.lang.Runtime.loadLibrary0(Runtime.java:823) 处 java.library.path 中没有 cperryinc-jni .System.loadLibrary(System.java:1045) 在 com.cperryinc.application.MoolaApplication.(MoolaApplication.java:24) 在 java.lang.Class.forName0(Native Method) 在 java.lang.Class.forName(Class. java:169) at com.xtremelabs.robolectric.internal.ClassNameResolver.safeClassForName(ClassNameResolver.java:36) at com.xtremelabs.robolectric.internal.ClassNameResolver.resolve(ClassNameResolver.java:15) at com.xtremelabs.robolectric.ApplicationResolver .newApplicationInstance(ApplicationResolver.java:71) 在 com.xtremelabs.robolectric.ApplicationResolver.resolveApplication(ApplicationResolver.java:28) 在 com.xtremelabs。robolectric.RobolectricTestRunner.createApplication(RobolectricTestRunner.java:483) at com.xtremelabs.robolectric.RobolectricTestRunner.setupApplicationState(RobolectricTestRunner.java:360) at com.xtremelabs.robolectric.RobolectricTestRunner.internalBeforeTest(RobolectricTestRunner.java:299) at com.xtremelabs .robolectric.RobolectricTestRunner.methodBlock(RobolectricTestRunner.java:277) 在 org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 在 org. junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)在 org.junit.runners.ParentRunner。runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners .ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) at com.intellij。 rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236)在 org.junit.runner.JUnitCore.run(JUnitCore.java:157) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter .java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236)在 org.junit.runner.JUnitCore.run(JUnitCore.java:157) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter .java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij。 junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij。 junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter. java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java: 120)在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 调用(NativeMethodAccessorImpl.java:39)在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 调用(NativeMethodAccessorImpl.java:39)

我不确定我能做些什么。关于解决方法的任何想法?