1

t/ の下に簡単なテスト ファイルがあります。すべてのテストを実行した後、概要を表示したいと考えています。なぜか「04.pl」の結果が表示される前にサマリが表示されてしまいます。すべてのテストを実行した後に概要を表示するにはどうすればよいですか?

==> 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 

テストを実行するために、'prove' ユーティリティを使用しました: /home/mydir/perl5/bin/prove -Q --formatter=TAP::Formatter::HTML > output.html

4

1 に答える 1

2

次のコマンドは、t /サブディレクトリ内のすべての.tファイルを実行し、STDOUTとSTDERRをマージして(-m)、静かに実行します(-Q)。

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

Perlでそれを実行する最も簡単な方法は次のとおりです。

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

http://perldoc.perl.org/prove.html#--stateを見て、パラメーターのすべての可能性を確認して--stateください。

于 2012-04-21T15:55:51.670 に答える