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

android - 如何使用 Robolectric 测试 IntentService?

我正在尝试测试using的onHandleIntent()方法。IntentServiceRobolectric

我开始服务:

似乎startedIntent不是空的,但onHandleIntent()似乎没有被调用。

我应该如何测试它?

0 投票
1 回答
2328 浏览

android - Robolectric (Android):使用 ShadowLocationManager ?是否可配置?

到目前为止,我一直在非常成功地使用 Robolectric。我有一个获取位置管理器的活动。现在根据文档,robolectric 框架结合了一个名为“ShadowLocationManager”的影子类来制作一种模拟。

我的问题真的是,我怎样才能控制这个模拟,我可以控制将返回什么?如果有怎么办?

还是我必须创建我的“OWN”影子类并实现“ShadowLocationManager”。

我一直在搜索文档,但我找不到任何东西来确认我在问什么。

如果 robolectric 确实包含位置管理器的影子,我如何控制启用哪些提供程序?如果一个已经存在并且可以配置和控制的影子类,我不想实现我自己的影子类。

0 投票
2 回答
1168 浏览

android - 动作条 Sherlock + Robolectric

我们在工作中将 Robolectric 用于我们的测试用例,这似乎不能很好地工作 Action Bar Sherlock。

问题是我收到一条No implementations match configuration消息,因为Build.VERSION.SDK_INT通过 robolectric 运行时 == 0。

如果有人对让 ABS 与 Robolectric 良好合作的最佳方式有任何想法,我很想知道。如果我发现我会在这里发布我的结果,但似乎很难找到有关如何使这个流行的工具包和库一起工作的信息。

0 投票
0 回答
372 浏览

android - 如何将 Robolectric 测试与 Android 测试框架混合使用?

我对 Android 测试还很陌生,这真的让我很难过,我发现使用 Android 的仪器测试框架更容易测试一些东西,而使用 Robolectric 的阴影对象更容易测试一些东西。

有没有办法拥有一个混合了 Robolectric 和 Android 测试的测试项目,或者唯一的方法是拥有两个独立的测试项目?

0 投票
1 回答
2927 浏览

android - 使用 Robolectric 的 Android 库 JUnit 测试:java.lang.InstantiationException

尝试使用 Robolectric 在 Android 库项目上运行 JUnit 测试时,出现以下错误:

我的第一个想法是我在测试中犯了一个错误,所以我尽可能简化了测试运行:

但我仍然得到同样的错误。我按照此处所述设置项目:http ://robolectric.org/eclipse-quick-start/ 奇怪的是它可以与其他 Android 库项目一起使用而没有任何问题。

任何帮助,将不胜感激!先感谢您!

0 投票
0 回答
289 浏览

android - Robolectric - 复制 SQLite 数据库时出错

我目前正在测试 Android API,为此,我开发了一个应用程序,该应用程序复制了我事先制作的数据库并测试了该应用程序(它调用了几个 Android 类)。有人指导我使用 Robolectric 来获取 Android 源代码,但是,这引起了一些问题。我的应用程序在没有它的情况下运行得很好,以及我的测试,但现在我在复制我的数据库时遇到了错误。每当我运行测试时,我的 catch 都会给我一个复制数据库的错误,并且取出该 catch 会导致 AssertionFailureError

我假设这与不复制数据库有关,就好像我放回代码中的 try-catch 一样,它会导致在复制数据库时重新设置它们。

这是我的 SQLiteOpenHelper 的代码,或者至少是在复制数据库时调用的代码。

我认为问题可能与上下文有关,所以我创建了一个 ShadowContext,但这也无济于事。还有其他错误,但这些只是相互调用的方法,一直到我的 SQLiteOpenHelper 中的 createDatabase()。

有谁知道我如何使用 Robolectric 复制这个数据库?我将它保存在我的应用程序的资产中,但显然,如果没有模拟器,这是没有意义的。谢谢你。

PS 如果需要,我可以添加更多代码,这正是我一开始认为是必要的。

0 投票
1 回答
310 浏览

java - Robolectric 和 SQLite.getVersion

在我的情况下,Robolectric SQLiteOpenHelper 中的 getVersion 始终返回 0。因此,如果当前 DATABASE_VERSION 大于 0,则在 DBHelper 中调用 onCreate。

有谁知道如何在 Robolectric 中配置/设置数据库版本?我正在使用 robolectric-1.1-jar-with-dependencies.jar 和 roboguice-2.0b4.jar。(到目前为止,读+写工作......)

谢谢

0 投票
4 回答
5635 浏览

java - 如何将十六进制颜色字符串解析为整数

我正在编写 Robolectric 中的一些代码,即IntegerResourceLoader. 以下方法抛出一个RuntimeExceptionwhenrawValue是诸如0xFFFF0000 之类的东西:

我尝试使用Integer.decode(String),但即使语法似乎正确,也会引发 NumberFormatException 。

0 投票
1 回答
705 浏览

android - 仅在使用 ANT 运行测试时库项目类的 NoClassDefFoundError

我添加ViewPagerIndicator到我的项目(它是一个 Android 库项目)中,我的测试在 IntelliJ 上运行良好,但是当我从 ANT 运行它们时失败。需要明确的是,只有从这个 Android 库项目中引用类的测试失败了,其余的都通过了,没有任何问题。我猜我的 build.xml 中有些地方不对劲?还有其他人遇到这个吗?

这是堆栈跟踪:

java.lang.NoClassDefFoundError: Lcom/viewpagerindicator/CirclePageIndicator; com.google.inject.internal.util.$ComputationException: java.lang.NoClassDefFoundError: Lcom/viewpagerindicator/CirclePageIndicator; 在 com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553) 在 com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419) 在 com .google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041) 在 com.google.inject.internal.FailableCache.get(FailableCache.java:50) 在 com.google.inject.internal。 com.google.inject.internal.InjectorImpl.getMembersInjector(InjectorImpl.java:950) 上的 MembersInjectorStore.get(MembersInjectorStore.java:65) com.google.inject.internal.InjectorImpl.getMembersInjector(InjectorImpl.java:

0 投票
1 回答
1060 浏览

intellij-idea - 使用 RobolectricTestRunner 的 JUnit 测试卡住了

我正在探索如何使用JUnit. 到目前为止,我之所以选择Robolectric它,是因为它可以提供更快、更容易的反馈。

不幸的是,我的第一次测试卡住了,我正在寻找一种方法来找出原因。我试图记录@Before@Test方法,但看起来它在跑步者初始化的某个地方停止了。

我正在使用 Robolectric 1.1、JUnit 4.8.2、IntelliJ IDEA 和 Android 4.1 SDK。

UPD:我通过在 IDEA 中暂停我的测试执行而进一步前进,我看到 Runner 正在做一些工作,但看起来它卡住了或在这些方法中有循环: