Выполнить проверку в Perl Test, если (и только если) тестовый сценарий успешен

Я использую Test::Unit::TestCase для модульного тестирования в Perl. Есть ли способ сделать какое-то специальное утверждение в sub 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 ответ

Решение

Test::Unit::TestCase не обновлялся 8 лет. Он не использует обычную инфраструктуру Test::Builder, поэтому его нельзя комбинировать с другими тестовыми модулями. Избегайте этого, если это возможно. Если вы хотите выполнить тестирование стиля xUnit в Perl, попробуйте вместо этого использовать 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;
};
Другие вопросы по тегам