0

我在 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 中进行,这样我就不会忘记特殊检查。

4

1 回答 1

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;
};
于 2013-05-01T06:39:02.970 回答