【发布时间】:2020-12-06 12:48:08
【问题描述】:
我在受Jeroen Mols 启发的 android 应用中使用这种架构:
如果是功能模块或库模块,每个模块都包含自己独立的单元测试。
目前,我必须像我的测试规则一样复制代码,因为我没有找到一种方法将测试代码从我的核心模块传播到模块的测试中。
这既可以用于生产代码,也可以用于测试?这样做的正确方法是什么?
【问题讨论】:
标签: android testing gradle architecture
我在受Jeroen Mols 启发的 android 应用中使用这种架构:
如果是功能模块或库模块,每个模块都包含自己独立的单元测试。
目前,我必须像我的测试规则一样复制代码,因为我没有找到一种方法将测试代码从我的核心模块传播到模块的测试中。
这既可以用于生产代码,也可以用于测试?这样做的正确方法是什么?
【问题讨论】:
标签: android testing gradle architecture
您可以创建一个新模块,例如 test-shared,您可以在其中添加您在测试不同模块时共享的代码,例如自定义规则、测试数据等。
然后将这个 test-shared 模块包含在您的其他模块中,使用:
testImplementation(project(":test-shared"))
Google IO 应用使用了类似的策略:https://github.com/google/iosched/tree/master/test-shared
【讨论】:
您将在 Java 或 Kotlin 模块中使用 Gradle test fixtures plugin:
测试夹具通常用于设置被测代码,或提供旨在促进组件测试的实用程序。除了
java或java-library插件之外,Java 项目还可以通过应用java-test-fixtures插件来启用测试夹具支持:
testImplementation testFixtures(project(':core'))
我不确定您是否也可以使用 Android 模块定义测试装置。我对 IDEA 也有一些小问题。我尝试使用xyz.tynn.idea.fix 插件修复这些问题。但主要是 Gradle 的一个不错的工具。
您会在 Stop Repeating Yourself: Sharing Test Code Across Android Modules 上找到 Michael Evans 的一篇不错的帖子。
【讨论】: