2012-04-21 56 views
0

我在t /下有一個簡單的測試文件。我想在運行所有測試後顯示摘要。出於某種原因,在顯示「04.pl」的結果之前會顯示摘要。如何在運行所有測試後顯示摘要?使用TAP :: Formatter :: HTML生成HTML報告並證明

==> t/test.t 

#!/usr/bin/perl 

use strict; 
use warnings; 

use Test::More; 
plan tests => 4; 

require "/home/mydir/perl5/lib/perl5/TAP/Harness.pm"; 
require "/home/mydir/perl5/lib/perl5/TAP/Formatter/HTML.pm"; 
require "/home/mydir/perl5/lib/perl5/TAP/Parser/Aggregator.pm"; 

my $f = TAP::Formatter::HTML->new; 
$f->verbosity(-1); 
$f->force_inline_css(0); 

my %args = (
    formatter => $f, 
    merge => 1, 
); 
my $a = TAP::Parser::Aggregator->new; 
my $h = TAP::Harness->new(\%args); 

my @files = qw[01.pl 02.pl 03.pl 04.pl]; 

$a->start; 
$h->aggregate_tests($a, @files); 
$a->stop; 

done_testing(4); 

my $summary = <<'END_SUMMARY'; 
    Total Tests: %s 
    Passed: %s 
    Failed: %s 
    Unexpectedly succeeded: %s 
    END_SUMMARY 

    printf $summary, 
    scalar $a->total, 
    scalar $a->passed, 
    scalar $a->failed, 
    scalar $a->todo_passed; 

    ==> Output (in html format) 

    1..4 
    ok 1 - First 
    ok 1 - Second 
    ok 1 - Third 
    Total Tests: 4 
    Passed: 4 
    Failed: 0 
    Unexpectedly succeeded: 0 
    ok 1 - Four 

運行測試,我用了 '證明' 實用程序: /家庭/ MYDIR/perl5的/ bin中/證明-Q --formatter = TAP ::格式化:: HTML> output.html

回答

1

以下命令將運行合併STDOUT和STDERR(-m)並安靜運行(-Q)的t /子目錄中的所有.t文件。

prove -m -Q --state=last --formatter=TAP::Formatter::HTML t/ > output.html 

在Perl來執行它的simpliest方法是:

$output = `prove -m -Q --state=last --formatter=TAP::Formatter::HTML t/`; 

http://perldoc.perl.org/prove.html#--state看看,看看--state參數的所有可能性。

+0

感謝您的回覆。我使用相同的命令來生成帶有圖形輸出的HTML報告。這不是問題。真正的問題是:在測試#4運行之前顯示摘要。 – user1348366 2012-04-21 16:07:27

+0

@ user1348366 - 查看我更新的答案 – 2012-04-21 16:25:06

+0

您不需要掏腰包來使用證明。你可以通過它的模塊[App :: prove](https://www.metacpan.org/module/App::prove)來調用它。 – 2012-04-23 16:20:52