8

有没有人在使用 Gradle (Android Studio) 构建时成功地让 Robolectric 和 Espresso 一起工作?

由于 Peter Friese 的帖子http://www.peterfriese.de/android-testing-with-robolectric/ ,我已经让 Robolectric 在 Android Studio 中工作,但由于 instrumentRunner/instrumentTest 碰撞,我不确定如何集成 Espresso .

理想情况下,我会有一个如下的目录结构:

 |--src
    └── main (application source - exists)
    └── test (Robolectric unit tests go here - exists)
    └── testEspresso [*new*] (espresso tests go here)

我的 Gradle+Android 知识不是很广泛,考虑到 Gradle+Android 的当前状态,我不确定这是否真的可行(时间、复杂性和脆弱性级别不是太极端),如果是,如何去做。此外,如果它是相关的,我有 2 种不同的构建风格。

4

2 回答 2

8

有关 Robolectric 和 Espresso 和谐合作的一个很好的例子,请查看 Robolectric 团队创建的这个示例项目:

https://github.com/robolectric/deckard-gradle

于 2014-03-31T19:54:49.270 回答
2

另一个不包括任何“黑客、Gradle 插件、IDE 插件或 IML 编辑”的选项是http://blog.blundellapps.co.uk/android-gradle-app-with-robolectric-junit-tests/。Jake Wharton 推荐了这种方法。这样,您的 Robolectric 测试就位于一个单独的 Java 模块中,与您的主项目分开。Espresso 代码与您的主项目一起存在。

使用 JW 的双倍浓缩咖啡 ( https://github.com/JakeWharton/double-espresso ) 将简化包括浓缩咖啡和随之而来的依赖管理疯狂。

@plackemacher 提到的解决方案,deckard-gradle,仍然是一个选项,并且正在维护中,尽管它确实需要一些黑客/手术才能使用 IDE。

更新:请参阅此处有关 Robolectric 和 Gradle(与 Gradle 相关)的讨论:https ://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4/discussion

更新:虽然我没有使用它,但这看起来是票。https://github.com/JakeWharton/double-espresso


目前,我选择创建一个单独的 Espresso 分支 (git),它具有正确的 testRunner 和测试目录集。不是一个非常优雅的解决方案......确实需要一些警惕来保持一切都是最新的,但它现在正在工作!

如果有人找到更好的解决方案,肯定会改变答案。

于 2013-12-25T21:56:44.560 回答