我可以判断Perl的Test :: More下是否通过了所有测试?

acz*_*ski 6 perl unit-testing

我有一个使用Test :: More编写的Perl测试脚本.在退出之前,如果所有测试都通过,我想执行一些清理操作.如果任何测试失败,我想留下一切用于故障排除.

Test :: More中是否有一个标志,或者在一个测试脚本中有一些其他最佳实践,一旦测试本身完成,就能判断"一切顺利"?

Eth*_*her 10

您可以使用Test :: Builder访问测试的当前状态,可通过Test::More->builder以下方式获得:

use strict;
use warnings;
use Test::More tests => 1;

ok(int rand 2, 'this test randomly passes or fails');

if (Test::More->builder->is_passing)
{
    print "hooray!\n";
}
else
{
    print "aw... :(\n";
}
Run Code Online (Sandbox Code Playgroud)

或者,你可以做你清理在脚本的末尾,但退出早,如果事情出差错,用Test::MoreBAIL_OUT("reason why you are bailing");.

您可以收集有关测试状态的大量其他数据和统计数据; 请参阅Test :: Builder的文档.