当我使用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
,那么它会以任何方式传递。
为什么会出现这种情况,以及如何解决这个问题?
答案 0 :(得分:2)
我找到了一个快速的解决方法:
$|=0; # no auto-flush
......但我不知道为什么会这样做。