Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果(且仅当)测试用例成功,则执行签入Perl测试_Perl_Testing_Teardown - Fatal编程技术网

如果(且仅当)测试用例成功,则执行签入Perl测试

如果(且仅当)测试用例成功,则执行签入Perl测试,perl,testing,teardown,Perl,Testing,Teardown,我在perl中使用Test::Unit::TestCase进行单元测试。如果——并且仅当——到目前为止,当前测试成功,是否有任何方法可以在下拉子模块中执行一些特殊断言 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-&

我在perl中使用Test::Unit::TestCase进行单元测试。如果——并且仅当——到目前为止,当前测试成功,是否有任何方法可以在下拉子模块中执行一些特殊断言

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
}

当然,我可以在每次测试结束时进行特殊检查,但最好在拆卸时进行检查,这样我就不会忘记特殊检查。

test::Unit::TestCase已经8年没有更新了。它不使用普通的Test::Builder基础结构,因此不能与其他测试模块组合。尽可能避免。如果要在Perl中进行XUntType测试,请考虑使用。 因为它是使用构建的,所以您可以访问底层的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;
};

你想做什么特别检查?在我的大多数测试中,我都会做一些模拟。在arange部分中,我定义了一些期望,在执行测试之后,我想断言,所有期望都被消耗掉了。