我如何 运行 android-testify 使用 Dagger Hilt 进行测试?

How can I run android-testify tests with Dagger Hilt?

我正在尝试集成 https://github.com/Shopify/android-testify 以将屏幕截图测试添加到我的应用程序。但是,由于我的应用程序当前与 Dagger Hilt 集成,我无法获得最简单的 运行 测试。

如果我尝试按照 Testify 文档的建议仅添加 ScreenshotRule,我会收到错误消息:

Caused by: java.lang.IllegalStateException: The component was not created. Check that you have added the HiltAndroidRule.

此外,如果我同时使用标准刀柄规则 (HiltAndroidRule(this)) 和 ScreenshotRule,测试会立即失败,包括在添加 ScreenshotRule 之前有效的测试。

我对 Hilt 和 Testify 没有任何第一手经验,但我确实有一些将多个测试 Rule 实例混合在一起的经验。问题是每条规则都假定它是给定测试 class 中唯一的测试规则 运行。因此,声明多个 Rule 实例可以让它们相互竞争并使它们处于一种立即失败的状态。

为了使规则协同工作,您可能需要使用 ruleChain

https://junit.org/junit4/javadoc/4.12/org/junit/rules/RuleChain.html

这篇关于 developer.android.com 的文章演示了在测试中处理多个 TestRule 对象的几种技术: https://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules