如何将类库测试模块的JUnit5测试接口导出供上层应用测试使用
解决方案
方案1:拆分独立的测试桩模块
- 在OrderedCollections类库项目中新建单独的Maven/Gradle模块,命名类似
ordered-collections-testkit - 把所有通用测试接口(比如
TreeTests)、测试工具类都移动到这个模块中,该模块依赖核心类库模块以及JUnit5相关依赖 - 该模块作为正常的发布构件发布到仓库,业务应用在测试作用域引入该依赖即可直接复用测试接口
以Gradle为例,业务应用的依赖配置如下:
testImplementation 'com.your.group:ordered-collections-testkit:1.0.0'
方案2:打包测试类导出(适合小型类库快速实现)
- 对类库项目的构建脚本进行配置,把
src/test/kotlin下指定包的测试代码打包为单独的构件(通常后缀为-tests.jar),同时发布到仓库
Gradle配置示例:
tasks.register<Jar>("testJar") { from(sourceSets.test.get().output) classifier = "tests" } publishing { publications { maven(MavenPublication) { from(components.java) artifact(tasks["testJar"]) } } }
- 业务应用在测试作用域引入该测试构件即可:
testImplementation 'com.your.group:ordered-collections:1.0.0:tests'
注意:该方案会把所有测试代码都导出,如果有内部测试用例不想暴露,需要提前做包路径过滤,只导出通用测试接口相关代码
方案3:把通用测试接口移动到核心类库(不推荐但可用)
- 把
TreeTests这类通用测试接口直接放到核心类库的src/main/kotlin路径下,JUnit5相关依赖设为compileOnly - 业务应用引入核心类库即可直接使用测试接口,JUnit5依赖由应用测试侧自行引入
缺点是核心类库会混入测试相关代码,污染生产依赖结构,仅适合内部使用不对外发布的类库使用
内容的提问来源于stack exchange,提问作者Kyle M
相关产品推荐
相关产品推荐

