问题标签 [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.
robolectric - Robolectric 3.2.2 获取影子类的实例?
我已经在我的 android 应用程序上实现了 MVP,并且正在考虑创建测试脚本来测试基本行为功能。长话短说,有没有办法获取我创建的阴影对象的实例?
我希望能够告诉模拟模型对象在方法中返回什么,例如,当调用 getGender() 时,返回 Male,但对于另一种方法,getGender() 将返回 Female。
我现在已经找到了,但我很幸运模型的设计。这是测试:
模型构造函数将上下文作为构造,因此我可以创建一个测试活动,它扩展了我要测试的活动。
这个新模型将包含我想要更改的值的 getter 和 setter。在影子对象的构造函数中,我可以将上下文转换为测试活动,然后模拟模型的 getter 可以返回我想要的:
编辑——>不可能,但有一个解决方法。在 GenderPreferenceInteractorShaddow 类中,将引用传回给 NewPreferenceMobileActivityTest 类,我们就有了对该类的引用。
这样做的缺点是您需要将 Gender 变量设置为默认值
android - 运行 Robolectric 测试的各种错误:Theme.AppCompat、NoClassDefFoundError 等
我的 Android 项目有大约 70 个 Robolectric 测试,它们都通过了 2 个月。不知何故,从今天开始,测试失败并出现奇怪的错误消息:
- java.lang.IllegalStateException:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。
- java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
- 也无法加载资源文件
我没有更改我的代码,所以它不能是与代码相关的问题。我清理了项目和 gradle,但没有帮助。几天前我确实做了一个由 Android Studio 推广的更新,不确定是否相关。
还有其他人遇到这个问题吗?我该如何摆脱这种糟糕的状态?
- 编辑 -
Robolectric 版本很重要!基于评论中的建议的有趣观察,robolectric 版本与故障率:
- 3.3.1,约 40% 的测试失败。
- 3.2.2,~40% 失败(与 3.3.1 相同)
- 3.1.4,~15% 失败
- 3.1.2,~0% 失败(有警告,见下文)
- 3.1, 100% 失败 (!)
另一个观察结果是不一致。如果我跑了整套,都通过了!但是,如果我只运行一个测试文件,则所有失败并显示以下消息:
没有这样的清单文件:build/intermediates/bundles/debug/AndroidManifest.xml
android - Android - 使用 Robolectric 测试字符串资源
我只是想测试获取 String 资源是否等于我认为它应该等于的值。我的问题似乎是我的项目中有领域。我知道 Robolectric 不支持 Realm(它在文档中说明),但我根本没有调用 Realm,所以我觉得可能有办法做到这一点。
看起来它确实在尝试调用Realm
编辑:我尝试了更多的东西,似乎manifest
在 @Config 注释中设置是问题,但后来我得到了android.content.res.Resources$NotFoundException: unknown resource 2131362072
还有其他想法吗?我可以制作另一个Realm
不被调用的应用程序类吗?/test 目录怎么知道呢?
编辑大卫:
我试过这个:
但我得到一个:
android.content.res.Resources$NotFoundException: unknown resource 2131362072
如果我将其更改为
我明白了
android - Robolectric 测试开始时挂断 - 从 sonatype 转移
我在项目中配置 Robolectric 时遇到问题。如果重要的话,我也在使用 Kotlin。
这是我的 build.gradle
}
}
}
当我运行测试时,它挂断并在控制台上出现消息:
从位于https://oss.sonatype.org/content的存储库 sonatype 下载:org/robolectric/android-all/o-preview-4-robolectric-0/android-all-o-preview-4-robolectric-0.jar /groups/public/ 从 sonatype 传输 68498K
我等了大约 10-15 分钟,仍然没有。
android - 如何使用 Android 依赖项和 robolectric 运行 Junit5 测试
我正在尝试运行这样的单元测试:
这是一个带有 Android 依赖项(即)和 Robolectric的Junit5测试。Looper.getMainLooper()
我正在使用 mannodermaus 的junit5 android 插件,它允许在 Android 设置中运行 junit5。但这不是开箱即用的,因为它不会加载 robolectric。所以我尝试了 alixwar 的分支来处理 robolectric 和 junit5 测试覆盖率,但仍然不会使用 Android 类。
我还开始研究如何在 junit5 上运行 robolectric 测试,这需要了解其RobolectricTestRunner
工作原理以及如何将代码移植到 JUnit5 平台。我对新的 junit5 平台了解甚少,但我发现我可以在org.junit.platform.runner.JUnitPlatform
runner 之上构建,以遵循 test runner 概念,这是junit-platform-runner
包的一部分。但这与原来的 Junit4 相距甚远,SandBoxTestRunner
以至于我无法完成移植。
那么实现 robolectric junit5 支持的最可行路径是什么,或者我是否缺少任何(明显的)概念?
android - Android Studio 无法识别“RobolectricTestRunner.class”
我正在尝试使用 Robolectric 运行单元测试,但 Android Studio 无法识别以下类别:
细节:
我正在导入依赖项:
和:
它根本没有出现导入类的选项。我应该添加更多我忘记的依赖项吗?
错误:
java - 使用 Robolectric 3.6.1 时出现 java.lang.IllegalAccessError
当我运行 JUnit 测试时,它会引发以下错误:
java.lang.IllegalAccessError: tried to access field org.robolectric.annotation.Config$Builder.sdk from class org.robolectric.RobolectricTestRunner$1
似乎这里有什么问题RobolectricTestRunner.java(3.6.1)
截图中的代码在robolectric-3.6.1-resources.jar
环境:
- JUnit:4.12
- Robolectric 3.6.1
- Android Gradle 插件:2.3.3
- 安卓工作室:3.0.1
- 操作系统:MacOS 10.13.2
任何人都可以帮助我吗?谢谢
robolectric - 使用段分析抛出 java.lang.IllegalArgumentException 的应用程序:需要 INTERNET 权限
问题:我正在尝试使用 robolectric 为我的应用程序运行测试用例。我的应用程序是细分分析。它在我的清单文件中已经存在时抛出 Internet 权限异常。
robolectric 版本:3.7.1,targetSDKVersion:26,gradle:3.0.1 命令:./gradlew clean testBuildDebug