如果在没有换行符的情况下写入stdout,则测试失败

时间:2012-01-16 12:26:40

标签: perl testing perl-prove

当我使用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,那么它会以任何方式传递。

为什么会出现这种情况,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我找到了一个快速的解决方法:

$|=0;     # no auto-flush

......但我不知道为什么会这样做。