问题标签 [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 投票
1 回答
747 浏览

android - Robolectric 是否能够断言方法已被调用?

我在布局中定义了一个按钮,如下所示:

绑定到我的活动中的onClick方法,例如:

使用 Robolectric,我可以为该活动创建一个简单的测试类,我想知道我是否可以进行调用按钮的测试,并确保我的活动中的方法被调用正常。

(我的应用程序中有一大堆按钮,因此打算进行测试以确保它们正确连接,除非有人对我为什么不应该打扰有任何建议)

0 投票
3 回答
13685 浏览

java - 是否有用于更改目录的 JVM 命令行选项?

简而言之,我想知道,是否有 JVM 命令行选项可以更改起始工作目录?如果它很重要,我正在运行 jdk1.6.0_24。

背景:

我正在使用一个名为 Robolectric for Eclipse 的工具来测试主机 PC 上的 Android 应用程序,而无需仿真。Robolectric 需要创建一个测试项目,但测试本身要从被测试的 Android 项目中运行。这是通过从 Eclipse 中完成的,在设置中将运行配置设置为被测项目:“运行所选项目、包或源文件夹中的所有测试”。

如果可能,我想从 JVM 命令行选项执行此操作,因为我使用的另一个工具Infinitest不允许指定测试的工作目录。但是,它允许您指定 JVM 命令行选项。

解决方法:

在我找到更好的解决方法之前,一个成功的方法是从 Android 项目中复制 AndroidManifest.xml 和 res 文件夹。

0 投票
4 回答
7580 浏览

android - Android:使用 Robolectric 和 Mockito 对 Android 应用程序进行单元测试

我有一个 Java 库,它使用了一些来自 Android API 的东西。我想使用 Mockito 为这个库编写单元测试。

有什么办法可以解决这个问题吗?

Mockito 在 Dalvik VM 上表现不佳,请参阅这篇文章:Using Mockito with Android virtual machine

更新:

自从这篇文章以来,我发现了 Robolectric,并且有机会在 Pivotal Labs 工作,并为这个库做出了一些小的贡献。我建议在 Android 测试框架/mockito 上使用它。此外,您可以自由使用 Robolectric 和 Mockito,但 Robolectric 中的阴影对象使 Mockito 在大多数用例中变得不必要。

尝试对 Android 进行单元测试的问题在于,您构建的 Android 库的每个方法都被存根,要么抛出存根异常,要么返回 null。如果您想测试您的应用程序并想要任何 Android 行为,那么您就不走运了,除非您使用 Robolectric,它会在类加载时动态重写字节码,并注入一个模拟行为的影子对象。

更新 2:

已经有一段时间了,情况发生了变化。Robolectric 中的许多 Shadow 类已替换为真正的 Android 类。现在使用真正的 Android jars,并且 Robolectric 只为更小的一组东西加载 Shadow 类。这也是使用 Robolectric 进行 Android 测试的更多理由。

0 投票
3 回答
5447 浏览

java - 未找到 Android Robolectric 软件包。未知包装:apk

嗨,我正在尝试使用 maven android 插件和 robolectric 来进行测试。现在我只有一个在 src/test 下的测试类。我已经按照这里的说明来尝试让它工作: http: //pivotal.github.com/robolectric/maven-quick-start。 html

更新:我已经听从了在这里发布给我的人的建议,这里是我最新的 Pom.xml 和编译输出。

这是我的 Pom.xml:

mvn clean install 的输出:

0 投票
2 回答
8751 浏览

dependency-injection - 尝试对 RoboGuice.newDefaultRoboModule() 进行单元测试并使用 Roboguice 2.0b3 和 Robolectric 失败

我一直在查看 RoboGuice 2 的 astroboy 示例代码和文档,我真的很难过。我希望你们都可以帮助我尝试一些事情。这里的目标是测试模块以确保它正在加载并且 IoC 正在工作/连接。

我有一个类似于他们的例子的测试: http ://code.google.com/p/roboguice/source/browse/astroboy/src/test/java/org/roboguice/astroboy/controller/Astroboy2Test.java?name =roboguice-2.0b3&r=ba37ef680410c64f7f1fe90f5b7b482958d276b5

我的有两种不同...我的模块在一个库类中,语法相同:

我在值文件夹的库类中也有 roboguice.xml

测试项目引用了应用程序项目,该项目引用并导出了库项目。

在测试项目中是这样的:

在设置过程中,它总是会出现某种空异常。我已经打破了这一点,特别是使用 newDefaultRoboModule 方法。我知道 Robolectric.application 不为空,并且我知道 new MyTestModule 也不为空。虽然在单步调试器时,我发现 MyTestModule.binder 为空,所以我不知道这是否是一个问题。

错误堆栈跟踪:

我还应该去哪里看?我对所有这些如何通过测试绑定感到迷茫。

感谢您的关注,凯利

0 投票
1 回答
968 浏览

android - 如何断言给定的 contentView 是使用 Robolectric 设置的?

给定以下示例onCreate()

我想要做的是对该活动进行单元测试,以确保我可以根据创建活动时传入的附加内容来设置任一内容视图。

到目前为止,我的 Robolectric 测试中有以下内容:

我怎样才能做到这一点?我查看了 API,但看不到任何明显的定位内容视图的方法,findViewById()但我希望布局不是单独的视图项。

谢谢

0 投票
2 回答
2147 浏览

android - Robolectric “警告:无法找到 Android SDK 的路径”

我正在使用 Robolectric 而不使用 maven 来构建,这意味着我正在使用 Robolectric-with-dependencies Jar。

我根据 Robolectric 网站上的说明进行了设置,但我仍然收到警告:无法找到 Android SDK 的路径”错误。我找到了这个链接(第一个答案),它提到了问题的出处,但没有回答我如何解决这个问题。

我是新手,从来没有发布过,因为我通常可以在浏览一段时间后找到解决方案,但是我没有找到解决方案的运气。任何事情都会有所帮助。谢谢。

0 投票
2 回答
3871 浏览

android - 是否可以使用 robolectric 进行真正的 http 请求

我对 robolectric 的问题是它不能生成真正的 HttpRequest。

我可以使用真正调用我的本地测试服务器的真实的 HttpClient 实现来替换 robolectric 吗?

0 投票
1 回答
805 浏览

android - 单元测试ArrayList

在我的应用程序中,我将 XML 文件的内容解析为两个数组。在我的单元测试中,如何从被测活动中获取这些 ArrayList,以便我可以测试它们的长度是否正确且内容是否正确?使用我目前使用的方法,尽管我知道解析工作正常,但数组始终为空。(解析方法在被测Activity的onCreate()方法中调用。)

来自 TroubleShooterActivity 的代码

0 投票
0 回答
1173 浏览

android - Robolectric 可以断言标签加载预期的活动吗?

我有一个活动,有 2 个选项卡,每个选项卡都指向一个活动,所以我总共有 3 个。

LoggedInActivity > MyProfile 或 MyBadges

}

我的问题是,如何设置一些 Robolectric 测试来断言当您单击选项卡标签时,它会显示正确的选项卡活动?

在之前的活动到活动断言中,我做了这样的事情:

但是我找不到任何关于如何在 Robolectric 中测试选项卡的帮助/提示/教程,即使是JavaDocs似乎也有点稀疏

任何帮助将不胜感激

编辑 1: 在 API 中指向更合适的类之后,这就是我迄今为止提出的:

出现以下故障:

我是否不明白如何测试标签?