问题标签 [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.
java - Maven + Robolectric,找不到资源?
这些天我正在为 android 编写一个演示应用程序,使用 robolectric for TA。我可以运行该项目,但是当我添加测试时,它会显示如下错误:
测试文件如下:
pom.xml 是这样的:
我真的不知道如何解决它。我不知道为什么奇怪的路径是“/Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values”。我不知道在哪里设置它或如何使它正确。
android - Robolectric,单击列表项的问题
我一直在努力解决这个问题,我认为我没有得到关于 Robolectric 的基本知识。通常一些谷歌搜索可以帮助我深入了解这类问题,但在此之间并查看示例代码我没有找到任何有用的东西。
我正在尝试模拟单击列表视图项并检查单击后是否启动了活动。我不断地回想我正在测试的当前活动是结果活动。我尝试删除所有列表项单击代码并检查结果活动,这作为我正在测试的 InstallationListActivity 回来了。所以我得出的结论是列表视图项没有被点击,我只是不知道为什么。我在下面的测试代码中设置的系统日志是我期望的值。该列表有 13 个项目,getChildAt(0) 返回标题。我认为获取第一个项目 (getChildAt(1)) 并在其上调用 performClick 或其子文本视图会启动我预期的活动,但似乎并非如此。反正,
这是我用来构建列表视图的布局:
这是初始化列表的代码:
任何帮助深表感谢!万分感谢!
android - Robolectric:如何将语言环境指定为 en-US 或 fr 以测试字符串格式?
在测试中,我们要测试英语和法语的字符串格式。如何在 robolectric 中指定语言环境?
这篇文章中的方法不起作用: Change language programmatically in Android
android - Android 中的 Robolectric:测试事件?
我已经使用 robolectric 编写了一些测试,现在我想做一些真正的测试类。
我注意到的一件事是我无法测试 onCreate、onLocationChanged 等事件。
测试事件的标准做法是什么?
我应该提取事件内部的代码并将它们放在一个方法中,事件将调用该方法,robolectro 也可以调用该方法,当然该方法需要是公共的,对吗?
另外,如果我想在我的方法中测试通常是私有变量的东西,那么我需要添加一个公共 getter,对吗?我可以从 robolectric 检查这个吗?
有没有更好的方法向 robolectric 公开数据?
android - Robolectric:ShadowApplication?
我通过stackoverflow和google在一些代码中看到很多对ShadowApplication的引用,但我不知道它的作用。
我不知道我是否缺少一些文档资源,但我无法提供任何好的资源,javadoc api 也没有解释太多。
谁能提供有关 ShadowApplication 的更多信息,是否有更多资源,即培训、教程?
我敢肯定,除了 ShadowApplication 之外,我还缺少很多东西
android - Robolectric 和 IntentServices
使用 Robolectric,如何测试一个将意图广播为响应的 IntentService?
假设以下类:
在我的测试用例中,我试图做这样的事情:
MyService 永远不会使用这种方法启动。我对 Robolectric 比较陌生,所以我可能遗漏了一些明显的东西。在调用 startService 之前我必须做某种绑定吗?我已经通过在上下文中调用 sendBroadcast 来验证广播是否有效。有任何想法吗?
android - How do I create a shadow class to work around crashes related to custom attributes when testing an Android app with Robolectric?
I'm integrating a custom widget into my project. It uses custom attributes and is crashing Robolectric. From what I gather, custom attributes aren't supported yet. Note: the constructor is "hostile" because it throws exceptions on construction, but I've commented them out for now.
Crash Log
java.lang.RuntimeException: error inflating layout/main at com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:106) at com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:82) at com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:86) at com.xtremelabs.robolectric.res.ResourceLoader.inflateView(ResourceLoader.java:377) at com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate(ShadowLayoutInflater.java:43) at com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate(ShadowLayoutInflater.java:48) at android.view.LayoutInflater.inflate(LayoutInflater.java) at com.xtremelabs.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:101) at android.app.Activity.setContentView(Activity.java) at com.blah.MainActivity.onCreate(MainActivity.java:17) at com.blah.MainActivityTest.setUp(MainActivityTest.java:29) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
Caused by: java.lang.ClassCastException: com.blah.support.shadows.ShadowMultiDirectionSlidingDrawer cannot be cast to com.xtremelabs.robolectric.shadows.ShadowView at com.xtremelabs.robolectric.Robolectric.shadowOf(Robolectric.java:857) at com.xtremelabs.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:70) at android.view.ViewGroup.addView(ViewGroup.java) at com.xtremelabs.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:60) at android.view.ViewGroup.addView(ViewGroup.java) at com.xtremelabs.robolectric.res.ViewLoader$ViewNode.addToParent(ViewLoader.java:217) at com.xtremelabs.robolectric.res.ViewLoader$ViewNode.create(ViewLoader.java:180) at com.xtremelabs.robolectric.res.ViewLoader$ViewNode.inflate(ViewLoader.java:150) at com.xtremelabs.robolectric.res.ViewLoader$ViewNode.inflate(ViewLoader.java:153) at com.xtremelabs.robolectric.res.ViewLoader.inflateView(ViewLoader.java:102) ... 29 more
I'm trying to work around this issue, because I don't care too much about testing this widget. Basically I want my tests not to crash and to verify that the view element is appearing on the screen.
Someone suggested a hack of placing the java file in a android package, but I'm not sure if it applies in my case. As suggested by this answer, the custom widget lives in package "android" which is parallel to my com.blah structure.
I created a shadow of the widget to get around the hostility issue (but currently I just comment out the exception throwing). Originally I wanted to bypass the work that was being done in the constructor since it relies on attributes that Robolectric isn't reporting correctly. The shadow constructor is getting called, but it continues through normal constructor execution. Is there a way to bypass additional construction?
ShadowClass
Custom Test Runner
Is this the right approach to work around the crashes until the testing framework supports this? Am I doing something wrong with my shadow or am I missing something else?
android - Robolectric HTTP 测试因 NoSuchMethodError 失败:org.apache.http.impl.client.DefaultRequestDirector
我正在尝试使用 Robolectric 测试框架的HTTP 层来测试 HTTP 调用。
我的测试类已经用 RunWith(RobolectricTestRunner.class) 进行了注释。这是一个示例 HTTP 测试用例:
此测试失败并且 JUnit 失败跟踪报告以下 DefaultRequestDirector 异常(源自 sendRequest() 调用):
任何想法可能导致 Apache 类抛出异常?
使用当前最新的库 robolectric-1.2-20120730.165026-113-jar-with-dependencies.jar。
android - Robolectric:使用 ormlite 进行测试
我正在尝试使用 robolectric 测试 ORMLite DAO,但数据库行为与在我的 android 应用程序中使用时不同。我的 DAO 在 android 应用程序上运行良好。
阅读 robolectric 阴影和调试代码时,我遇到了ShadowSQLiteOpenHelper(此处为代码)。
有谁知道这个Shadow是否足以测试ormlite daos?或者我必须创造自己的影子来实现这一目标?这里有任何线索/提示/建议/示例吗?
提前致谢。
额外信息:
测试方法:
运行此测试时遇到的一些问题:
- 使用“camelCased”属性名称查询实体时出错:在测试的最后一行抛出错误(相关问题)。运行 android 应用程序时从来没有遇到过这样的问题。
- 当我更改其中一个属性名称(例如,
isEnabled
更改为enabled
)以避免出现 camelCase 问题时,之前的错误仍然存在……似乎内存数据库没有应用我对实体所做的更改。
使用的版本:
- 机器人电气 1.1
- OrmLite 4.41
android - 使用 Robolectric 进行测试时,SparseIntArray 不会改变
我是新手Robolectric
,我正在尝试对一个简单的 getter/setter 代码进行单元测试,但SparseIntArray
在测试时似乎没有按预期工作,Robolectric
而且它根本没有改变。(我总是用 get 方法得到'0')。
我还尝试为自身添加一个静态getter,SparseIntArray
发现调用setter后,数组大小为0。
我在这里想念什么?
这是我要测试的代码:
这是测试: