Kotlin多平台仅含commonTest时,Gradle是否应执行全平台测试?
问题解答
这个情况是完全正常的,原因如下:
模板的默认配置
你克隆的官方多平台库模板,已经预先配置了JVM、JS、iOS模拟器这几个目标平台的编译和测试任务。Gradle的build任务本身会依赖所有与构建相关的子任务,包括各平台的测试任务,所以执行./gradlew build时会自动触发这些测试任务,不管你有没有写测试用例。无测试用例导致失败的原因
默认情况下,Gradle的测试任务如果检测不到任何可执行的测试用例,会直接标记任务失败——这是模板为了确保开发者不会遗漏测试环节而设置的默认行为,避免你在没有测试的情况下直接构建发布。
解决办法
如果你暂时不需要写测试,可以通过两种方式处理:
- 修改测试任务配置:在项目的
build.gradle.kts中添加配置,让测试任务在没有用例时不失败:// 全局禁用测试任务无例失败的规则 tasks.withType<Test>().configureEach { failIfNoTests = false } // 针对Kotlin多平台的目标测试任务,补充配置 kotlin.targets.all { compilations.getByName("test").tasks.withType<Test>().configureEach { failIfNoTests = false } } - 移除不需要的目标平台:如果你的项目不需要iOS或JS平台,可以直接在
build.gradle.kts中删掉对应的目标配置,比如移除iosSimulatorArm64()或js(IR)相关的代码,这样build时就不会触发这些平台的测试任务了。
当然,如果你后续要完善库的质量,建议给对应平台补充测试用例,哪怕是简单的空测试类,也能避免构建失败。
内容的提问来源于stack exchange,提问作者NebulaFox
相关产品推荐
相关产品推荐

