用途:用 BATS(Bash Automated Testing System)可靠地测试 shell 脚本,编写、运行和调试 bash 脚本测试。
主要能力与用法:运行测试文件用 bats test/my_script.bats,运行目录内全部测试用 bats test/,详细输出用 bats --verbose-run test/,CI 常用 TAP 格式 bats --formatter tap test/,美观输出用 bats --formatter pretty test/。测试文件以 .bats 结尾,可定义 setup() 与 teardown() 分别在每个测试前后运行,@test "..." { ... } 定义用例。run 关键字会同时捕获 stdout 与退出状态到 $output 与 $status。常用断言包括退出状态 [ "$status" -eq 0 ]、精确输出匹配 [ "$output" = "expected" ]、正则匹配 [[ "$output" =~ "pattern" ]]、按行检查 ${lines[0]}、文件存在 [ -f "$filepath" ]、字符串非空 [ -n "$result" ]、数值比较 [ "$count" -gt 5 ]。
辅助库:可配合 bats-support 与 bats-assert,在 setup() 中用 load 加载,获得 assert_success、assert_output --partial、refute_output --partial、assert_line --index 等可读断言;安装方式为 git clone https://github.com/bats-core/bats-support test/test_helper/bats-support 与 git clone https://github.com/bats-core/bats-assert test/test_helper/bats-assert。
注意事项:测试在子 shell 中运行,变量变更不会在测试之间泄漏;昂贵的一次性准备可使用 setup_file() / teardown_file()。适用场景为对 bash 脚本做自动化回归测试,尤其适合纳入 CI。限制:资料未提供版本要求、平台兼容性、性能数据或收费信息。