2009-10-01 64 views

回答

10

您可以通過Test::More->builder訪問與Test::Builder測試的當前狀態,可用:

use strict; 
use warnings; 
use Test::More tests => 1; 

ok(int rand 2, 'this test randomly passes or fails'); 

if (Test::More->builder->is_passing) 
{ 
    print "hooray!\n"; 
} 
else 
{ 
    print "aw... :(\n"; 
} 

或者,你可以做你清理​​在腳本的末尾,但退出的早期,如果事情出差錯,與Test::MoreBAIL_OUT("reason why you are bailing");

有很多其他數據和統計信息可以收集有關您的測試狀態;請參閱Test::Builder的文檔。

+0

我有無法通過一攬子「測試::生成器」在./put.pl線9 用Perl V5定位對象的方法「is_passing」 .8.4和31個已註冊的修補程序(在Solaris 10上):o( – philant 2009-10-02 12:34:42

+0

我也在Test :: More版本0.8中得到了這個,但是有b etter運氣與測試::更多版本0.93。 – mob 2009-10-02 15:12:50

+1

Test :: Builder-> is_passing()在版本0.89_01中添加,請參閱CHANGES文件:http://cpansearch.perl.org/src/MSCHWERN/Test-Simple-0.94/Changes – Ether 2009-10-02 16:34:44

0

這是我爲了避免在這個答案的底部顯示「無法找到對象的方法」錯誤走過來:

#! /usr/bin/perl 

use strict; 
use warnings; 
use Test::More tests => 1; 

ok(int rand 2, 'this test randomly passes or fails'); 

my $FAILcount = 0; 
foreach my $detail (Test::Builder->details()) { 
    if (${%$detail}{ok}==0) { $FAILcount++; } 
} 

if ($FAILcount == 0) { 
    print "hooray!\n"; 
} else { 
    print "aw... :(\n"; 
} 

在Solaris 10上,用Perl v5.8.4( 31個註冊補丁),我得到了以下

Can't locate object method "is_passing" via package "Test::Builder" 
+0

您需要升級您的測試::簡單分佈 - 請參閱其他答案中的註釋。 – Ether 2009-10-02 16:35:51

+0

我知道你在Solaris下,但在ActivePerl上升級Test :: Simple就是這樣。 Test :: Builder在我的Win32 5.10安裝中沒有自己的PPM條目。我花了幾分鐘的時間來追蹤,所以也許這張筆記會爲別人節省時間。 – aczarnowski 2009-10-03 19:17:33

相關問題