2013-05-01 95 views
0

我正在使用Test :: Unit :: TestCase进行perl中的单元测试。有没有什么办法在tear_down子版中做一些特殊的断言,如果 - 并且只有当前的测试成功到目前为止。执行检查Perl测试是否(并且只有)测试用例成功

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里面,让我不能忘记的专项检查。

+0

你想做什么特别检查? – Schwern 2013-05-01 06:39:33

+0

在我的大部分测试中,我都会做一些嘲弄。在这个范畴中,我定义了一些期望,并且在我想要断言的测试之后,所有的期望都被消耗掉了。 – Meise2000 2013-05-01 09:24:26

回答

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