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

per*_*ing 5 testing perl perl-prove

当我使用该prove实用程序运行perl测试时,如果测试中的方法包含print未被换行符终止的语句,则它将失败.

use Test::More tests=>1;

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

sub foo{
    print "A";
    1;
}
Run Code Online (Sandbox Code Playgroud)

这导致了

Bad plan.  You planned 1 tests but ran 0.
Run Code Online (Sandbox Code Playgroud)

如果我附加换行符:print "A\n";测试通过.

(注意,如果我只是执行测试perl mytest.t而不是使用prove它通过任何一种方式).

任何想法为什么会这样,以及如何解决它?

kub*_*zyk 2

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

$|=0;     # no auto-flush
Run Code Online (Sandbox Code Playgroud)

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