1

私は一日中答えを見つけようとしていますが、何も見つかりませんでした。test::more (test1.t、test2.t、test3.t ...)を使用していくつかのテストを作成しました。TAP::Harnessを使用してすべてのテストを処理し、 formatter_class => 'TAP::Formatter::JUnitを使用して JUnit 形式で出力を出力するメインの perl スクリプト (main.pl) を作成しました。私のテストでは、BAIL_OUT 関数を使用します。問題は、テストが救済されると、メイン スクリプトも終了し、出力がまったくないことです。たとえば、test3.t bailed_out の場合、test1.t と test2.t の結果を確認する必要があります。どうやってやるの?

他のテストを続行したくないので、BAIL_OUT の代わりに exit や die を使用することはできません。(test3.t が BAIL_OUT の場合、test4.t を実行したくありません。)

誰かが私を助けてくれますか?救済されたテストの前に実行されていたテストの結果を確認する必要があります。

ありがとう。

4

2 に答える 2

0

BAIL_OUT の場合、すべてのテストを 1 つの TAP::Harness に渡す代わりに、一度に 1 つのテストを Harness に渡す必要があります。

私はあなたのコードを見たことがないので、ここに私の意味のサンプルがあります。フォーマッタと必要なものを含めるように調整します。

use TAP::Harness;

my $harness = TAP::Harness->new({ merge => 0 });
my $tests = ['t/test1.t', 't/test2.t'];

foreach my $test (@$tests) {
    eval {
        $harness->runtests([$test]);
    }; if ($@) {
        # create new harness object if the previous fails catastrophically.
        $harness = TAP::Harness->new({ merge => 0 });
    }
}
于 2013-10-07T21:11:24.703 に答える