问题标签 [robolectric-gradle-plugin]

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 回答
240 浏览

gradle - 在 build.gradle 中配置 Robolectric

谁能解释我如何让 robolectric 在 android studio 中与 gradle 一起工作?我用不同的配置尝试了很多次,但没有任何效果。也许这是一个简单的问题,但我现在不知道该怎么做。我使用 android studio 1.1.0 和 gradle 2.2.1

0 投票
2 回答
2469 浏览

android - 一些 Robolectric 测试在一起运行但单独通过时失败

我使用的是 Android Studio 1.2,Robolectric 3.0-rc2。

我有两个测试类,一个MotdTest使用一种测试 POJO json 序列化和反序列化的测试方法调用。另一个叫做UserInfoTest,它包含 4 个测试方法,用于测试我设置的用户信息SharedPreferences。如果我UserInfoTest单独运行,所有 4 种测试方法总是通过。但是,如果我运行所有测试,则测试MotdTest成功,但两种方法UserInfoTest总是失败。我现在通过调用从命令行运行./gradlew test

有谁知道为什么我运行所有测试时我的一些测试都失败了?在我的 UserInfoTest 中,我确实有一个带@After注释的方法,我通过在SharedPreferences.Editor.

用户信息测试:

testOnSignIn()失败,assertThat(6, equalTo(prefs.getAll().size()));因为 的大小prefs为 0。

并且testIsSignedIn()失败了assertThat(UserInfo.isSignedIn(), is(false));

用户信息:

App是一个Application子类并且App.getInstance()是一个单例。

MyRoboRunner:是一个修改版本,因为我在 mac 上,也因为我在我的项目中以 API 22 为目标,但 robolectric 还不支持,所以我针对 API 21 运行测试。

0 投票
2 回答
783 浏览

android - 如何使用 Robolectric 3.0 从服务器测试 ListView 项目

我正在使用 Robolectric 测试我的应用程序。在我的应用程序中,我想检查列表视图该视图中是否有任何项目。并从列表视图中测试 onClickItem。列表视图项目是来自服务器的动态。每次启动活动时,它都会从服务器请求。但是,Robolectric 没有等待响应,所以列表视图上的适配器仍然为 Null。

这是来自 Robolectric 测试的错误。

如何让 Robolectric 代码等待来自服务器的响应。所以listview适配器不再为null,可以测试listview了。

0 投票
2 回答
1728 浏览

java - 我正在学习 Robolectric 但发生错误

我正在学习Robolectric

我的项目目录是, 在此处输入图像描述

我的单元测试代码MainActivityTest如下,

配置是, 在此处输入图像描述

当我运行测试代码时, 在此处输入图像描述

出错了,

它说明了我的java。java信息是, 在此处输入图像描述

为什么说

将使用两者之一。哪一个是未定义的。

整个代码在我的 github RobolectricGo中。

0 投票
1 回答
7955 浏览

android - Multidex 后 Robolectric 单元测试失败

所以我最近将我的 robolectric 3.0 升级与我们的主线合并,它为我们的应用程序添加了 multidex 支持。不幸的是,这有一个不幸的副作用,导致我们的测试失败/不运行 - 它们只会在第一次尝试安装 MultiDex 失败后停止,并带有以下堆栈跟踪:

我尝试实现各种解决方案,例如在我的 Multidex.Install 中捕获 RuntimeException (如此处所述https://github.com/robolectric/robolectric/issues/1328)并使用 Robolectric 提供的影子 MultiDex,但这根本失败带有 Gradle TaskExecutionException 并以值 255 退出。

有没有人想出解决这个问题的方法?这真的减慢了我的工作流程。

0 投票
0 回答
847 浏览

android-studio - 在 Android Studio 1.2 中运行 robolectric 3.0 单元测试时出现运行时异常

我正在使用 Robolectric 3.0 运行 android 单元测试,并且遇到了这个运行时异常。所有的测试几乎都给出了相同的例外。

我尝试了许多建议的选项,例如将--rerun-tasks添加到脚本参数,取消选中Compiler -> Android Studio 的 Gradle 设置中的“使用进程内构建”选项等。但它们都没有奏效。

这是我的 build.gradle 依赖列表的示例:

花了很多时间研究它,但没有结果。我非常感谢这方面的任何帮助。

谢谢!

0 投票
1 回答
921 浏览

android - LinkedIn Android SDK 设置

我已经按照 developer.linkedin.com 提供的入门指南开始将 LinkedIn 登录集成到我的应用程序中

我已经下载了适用于 Android 的移动 SDK,并在我的项目中导入了linkedin-sdk。

将以下行添加到我在 build.gradle 中的依赖项中:

在我的 settings.gradle 中添加了以下行:

当我同步项目时,我收到以下错误:

任何帮助是极大的赞赏。谢谢!

0 投票
1 回答
216 浏览

android - 在没有多重索引的情况下使用 Robolectric?

我正在开发一个 Android 应用程序,我想使用 Robolectric 进行测试。

我遇到的主要问题是,每当我将 Robolectric(和其他一些测试库)包含到我的 gradle.build 文件中时,我都会收到 Dex 错误,因此我需要启用 multidexing 库(我正在研究Android 4.4)。

正因为如此,我不能再编译了,它需要的时间太长了。如果没有 Robolectric 和 multidex,编译可能需要一分钟,而在包含 Robolectric 和 multidex 时超过 30 分钟后我什么也得不到。

这是我完整的 gradle 文件:

我的问题是:在我的项目中包含 Robolectric 时,我做错了什么让我被迫使用 multidex?

0 投票
4 回答
1880 浏览

android - Android java.lang.NoClassDefFoundError: R$string

每当我运行单元测试时,当它尝试从自定义 config.xml 文件中检索字符串值时,我都会收到此错误。

背景:

该项目本身是一个库 apk 项目,它使用和引用另一个库 APK 项目。

当项目本身尝试启动一个新对象时会发生错误,该对象是引用的库 apk 项目中包含的超类的子类。

该问题在下面进行了详细说明

因错误而失败的特定代码行是下面定义的静态变量:

它失败并出现以下错误:

如果您想知道,commonLib 是引用的库 apk。

这是我的单元测试

EventsTestHelper 是名为 NetworkHelper 的超类的子类,如下所示:

我使用最新的 robolectric 3.0 版来运行我的单元测试。

如果我要实时运行代码并调用并启动子类,它工作得很好,没有崩溃

编辑:下面是我的构建 gradle 文件的片段

编辑:我还尝试手动创建一个任务,为每个依赖项复制 r 类。

亲切的问候

强尼

0 投票
0 回答
585 浏览

android - 在 android studio 中以离线模式设置 Robolectric

我正在尝试在 android studio 中以离线模式设置 Robolectric。我需要它处于离线模式,因为我们需要在没有网络访问权限的 Jenkins 服务器上运行测试。

我遵循了以下链接中的“在离线模式下使用 Robolectric”部分:

http://codeblast.com/

我使用链接中给出的 pom 文件来下载所有相关的 jar 以在离线模式下设置 robolectric。我将 jars 包含在 Libs 文件夹中,并将它们作为依赖项添加到 android studio 中。当我在终端中使用以下命令运行简单测试时:

./gradlew clean testDebug --offline

我收到以下错误:

错误:Gradle:任务“:app:preDexDebug”执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/home/m1018337/jdk1.7.0_55/bin/java'' 以非零退出值 1 结束

我用谷歌搜索并尝试了一些修复上述错误的方法,但没有成功。
我需要帮助在离线模式下设置 robolectric。提前致谢。