Выполнить проверку в 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;
};