Gradle模块输出配置仅用于测试依赖项

时间:2018-12-23 15:14:43

标签: android gradle build.gradle

我有一个 Gradle 项目,其中包含两个模块apptest,其中test仅包含用于测试的实用程序。现在,我想设置此模块,因此它不包含任何输出到app main 配置中;甚至不是偶然的。

implementation project(':test') # should fail or not contain any inputs

testImplementation project(':test') # should include all inputs
androidTestImplementation project(':test') # should include all inputs

如何配置test使其具有这种行为?

我认为这与 Android 插件处理构建类型和风格的配置类似,但我也不确定如何弄清这一点。

3 个答案:

答案 0 :(得分:0)

您可以为此使用注释: https://developer.android.com/studio/write/annotations#visible

另一种方法是将测试代码排除在名为sub_test的新模块中,并在testImplementation模块中使用该androidTestImplementation模块的sub_testtest / p>

答案 1 :(得分:0)

找到:Use separate test modules for instrumented tests,其中介绍了操作方法:

  

...应用com.android.test插件而不是com.android.library

答案 2 :(得分:0)

java-test-fixtures插件的行为几乎与我希望的一样,只是有些冗长。

implementation project(':test') # should fail or not contain any inputs

testImplementation testFixtures(project(':test'))
androidTestImplementation testFixtures(project(':test'))

暂时还有其他缺点

汤姆·特雷斯基(Tom Tresansky)Is the java-test-fixtures plugin incompatible with the Build and run using IntelliJ IDEA setting?询问并回答, Android Studio 不能很好地处理testFixtures来源集。

Kotlin Android 尚不可用。但是作为Michael Evans pointed out,已经有AndroidYouTrack上的任务。

但是,使用 Kotlin JVM项目创建测试装置,并通过 Android 项目使用这些装置对我来说很好。