5

proveユーティリティを使用して perl テストを実行すると、テスト対象のメソッドにprint改行で終了していないステートメントが含まれていると失敗します。

use Test::More tests=>1;

ok(foo(), "calling foo");

sub foo{
    print "A";
    1;
}

これにより、

Bad plan.  You planned 1 tests but ran 0.

改行を追加するとprint "A\n";、テストに合格します。

perl mytest.t(テストを使用するのではなく、単にテストを実行すると、proveどちらの方法でも合格することに注意してください)。

これが考えられる理由と、それを回避する方法はありますか?

4

1 に答える 1

2

簡単な回避策を見つけました:

$|=0;     # no auto-flush

...しかし、なぜこれが機能するのか(まだ)わかりません。

于 2012-01-16T14:25:02.973 に答える