用途:为 Perl 模块与应用编写、组织并运行测试,涵盖 TDD 流程、断言、异常测试、模拟与覆盖率统计。
主要能力:
- 测试框架:Test::More 基础断言(is、isnt、ok、is_deeply、like、unlike、isa_ok、can_ok)与 SKIP/TODO 块;Test2::V0 提供 hash、array、bag 构建器、match、validator、DNE 等更丰富的深层比较与诊断,并兼容 Test::More 测试。
- TDD:按 RED 写失败测试、GREEN 写最小实现、REFACTOR 保持测试通过的顺序推进。
- 组织与运行:t/ 目录分层(unit、integration、lib、fixtures),用 prove 运行,如 prove -l t/、prove -lv t/unit/user.t、prove -lr -j8 t/、prove -l --state=failed t/,可配合 .proverc 与 TAP::Formatter::JUnit 输出 CI 结果。
- 异常测试:用 dies、lives、warns 检查异常、正常返回与警告。
- 模拟:Test::MockModule 临时替换方法并在作用域结束后自动恢复,避免全局 monkey-patch;Test::MockObject 创建轻量测试替身。
- 覆盖率:使用 cover -test、cover -report html,并可在 CI 中按阈值(如 80%)判定失败。
- 集成测试:可用内存 SQLite(dbi:SQLite:dbname=:memory:)与 HTTP 模拟。
使用方式:测试文件以 use v5.36; use Test2::V0; 引入,subtest 分组,末尾 done_testing;运行需带 -l 将 lib/ 加入 @INC;覆盖率通过 perl -MDevel::Cover 或 cover -test 生成报告。
限制与注意事项:资料未提供具体环境版本要求、安装步骤或性能数据;避免过度模拟、subtest 间状态污染、遗漏 done_testing 与 -l 标志;建议新项目使用 Test2::V0,不测试 CPAN 模块本身。