如果(且仅当)测试用例成功,则执行Perl Test中的Check

时间:2013-05-01 04:11:50

标签: perl testing teardown

我在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中进行特殊检查会更好,所以我不能忘记特殊检查。

1 个答案:

答案 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;
};