2013-05-01 61 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; 
}; 
相關問題