我在Perl中使用Test :: Unit :: TestCase进行单元测试。有没有办法在tear_down子中做一些特殊的断言,如果 - 并且只有 - 目前的测试成功到目前为止。
sub set_up {
my ($O_self) = @_;
# prepare test case
}
sub tear_down {
my ($O_self) = @_;
# how to check if test succeeds so far?
if (...) {
$O_self->assert_something_special_for_all_tests();
}
}
sub test_any1 {
# some test
}
sub test_any2 {
# some other test
}
当然,我可以在每次测试结束时进行特殊检查,但在tear_down中进行特殊检查会更好,所以我不能忘记特殊检查。
答案 0 :(得分:2)
Test :: Unit :: TestCase在8年内没有更新。它不使用普通的Test :: Builder基础结构,因此不能与其他测试模块结合使用。尽可能避免使用它。如果您想在Perl中进行xUnit样式测试,请考虑使用Test::Class代替。
因为它是使用Test::Builder构建的,所以您可以访问底层的Test :: Builder对象并询问它的测试状态。
sub teardown : Test(teardown) {
my $self = shift;
my $tb = $self->builder;
my $all_tests_passing = !grep !$_, $tb->summary;
do_something_extra if $all_tests_passing;
};