Android React Native项目:排除Node模块测试以修复CI构建失败
解决React Native Android模块测试失败导致CI构建失败的问题
一、修复Gradle测试排除配置
你之前的配置无效,原因是修改的是app模块的sourceSets,但目标测试代码属于引入的第三方模块,以下是几种可行的修正方案:
方法1:禁用目标模块的测试任务(若可修改模块代码)
直接在该模块的build.gradle中添加配置,禁用所有测试任务:
tasks.withType(Test) { enabled = false }
方法2:在app模块中过滤指定测试类
如果无法修改第三方模块代码,可在app模块的build.gradle中添加测试过滤规则,跳过指定包下的所有测试:
android { testOptions { unitTests.all { filter { excludeTestsMatching "com.some.path.**" } } } }
方法3:排除模块的测试依赖
若该模块的测试代码通过依赖引入,可在依赖声明中排除测试相关内容:
dependencies { implementation("com.your.module:your-module:1.0.0") { exclude group: 'com.some.path', module: 'test' } }
二、自动删除模块test文件夹的方案
方案1:自定义Gradle删除任务
在app模块的build.gradle中添加自定义任务,构建前自动删除目标模块的test文件夹:
// 自定义删除任务,替换为实际的模块test路径 task deleteModuleTestDir(type: Delete) { delete fileTree(dir: "../node_modules/your-target-module/android/src/test", include: "**/*") delete fileTree(dir: "../node_modules/your-target-module/android/test", include: "**/*") } // 绑定到测试任务前执行 tasks.withType(Test).configureEach { dependsOn deleteModuleTestDir } // 绑定到预构建任务,CI构建时自动触发 preBuild.dependsOn deleteModuleTestDir
方案2:CI脚本直接执行删除命令
在CI构建脚本(如GitHub Actions、GitLab CI)中,添加构建前的shell命令:
# 替换为实际的模块路径 rm -rf ../node_modules/your-target-module/android/src/test rm -rf ../node_modules/your-target-module/android/test
内容的提问来源于stack exchange,提问作者Bill Mote
相关产品推荐
相关产品推荐

