用途:为 bash 与 zsh shell 脚本编写符合惯例的 BATS 测试,适用于新写测试、给现有 shell 项目补测试、审查测试质量以及运行测试。
主要能力:给出测试文件模板(load bats-support、bats-assert、bats-file,setup 中 source 被测模块);提供断言速查(assert_success、assert_failure、assert_output 及 --partial/--regexp、assert_line、refute_output、assert_file_exist 等);说明 run 语义(run cmd、run -0、run -1、run !、run --separate-stderr 及 $status、$output、${lines[@]});介绍生命周期钩子 setup_file/setup/teardown/teardown_file;给出 mock 策略(函数覆盖、PATH 注入 CLI 桩);说明 zsh 代码测试方式(bats --shell zsh,或 zsh -c 显式调用,纯 zsh 特性用 zunit)。
使用方式:只运行受改动影响的测试文件,不跑全量套件,如 bats tests/helpers.bats tests/theme.bats;按名称过滤 bats tests/helpers.bats --filter "format_insert";按标签过滤 bats tests/ --filter-tags "unit"。框架选择上,bash 与多语言 bash/zsh 代码、CLI 命令用 BATS,纯 zsh 特性用 Zunit。
限制与强制要求:测试必须隔离,禁止使用真实项目/框架目录,改用 $BATS_TEST_TMPDIR 下的模拟目录;需 mock 所有会改状态的外部命令;生产命令应加测试模式守卫;外部工具缺失时用 skip 优雅跳过;teardown 中手动 rm -rf 需加守卫;用 $BATS_TEST_TMPDIR 存放临时文件。文件组织为一个源文件对应一个测试文件,共享辅助放 test_helper.bash,夹具放 fixtures/。更详细的模式、反模式与 zsh 测试内容见其 references 文档。