CircleCI自定义Orb中BATS测试助手无法加载的问题求助
问题解决:CircleCI中BATS测试无法加载test_helper
问题背景
自定义CircleCI Orb,使用bats orb对Shell脚本进行测试,按照bats-core官方教程引入测试助手,但执行测试时出现文件找不到的错误。
任务配置
- bats/run: formatter: junit path: ./src/tests timing: true
测试代码(src/tests/utils.bats)
#!/usr/bin/env bats setup() { load "test_helper/bats-assert/load" source "./src/scripts/utils.sh" } # 1 Should load file when @test "1.1: config file given, required tag missing " { mkdir -p "/home/circleci/" touch "/home/circleci/.test.utils.config " config_file="/home/circleci/.test.utils.config" echo "NEW_PARAMETER=value" > $config_file SourceParameters "${config_file}" assert_equal "${NEW_PARAMETER}" "value" # Check for no exit error }
报错信息
load: 无法加载 test_helper/bats-assert/load:找不到该文件或目录
解决方案
1. 安装bats-assert测试助手
CircleCI的bats orb默认不包含bats-assert这类扩展库,需要手动安装到测试目录的test_helper路径下。在bats测试任务前添加安装步骤:
- run: name: 安装BATS测试助手 command: | # 创建test_helper目录(如果不存在) mkdir -p ./src/tests/test_helper # 克隆bats-assert到指定路径 git clone https://github.com/bats-core/bats-assert.git ./src/tests/test_helper/bats-assert
2. 验证路径正确性
确保test_helper/bats-assert/load.bash文件存在于src/tests目录下——BATS的load命令默认从测试文件所在目录的test_helper路径查找文件,也可通过设置BATS_TEST_HELPERS环境变量指定自定义路径。
如果习惯用子模块管理依赖,也可以将bats-assert添加为git子模块:
git submodule add https://github.com/bats-core/bats-assert.git src/tests/test_helper/bats-assert
完成上述操作后重新运行CircleCI任务,即可正常加载测试助手并执行断言逻辑。
内容的提问来源于stack exchange,提问作者GagMirz
相关产品推荐
相关产品推荐

