TAP ::线束perl测试tee输出
问题描述:
我正在运行我的测试,使用TAP :: Harness,当我在Linux系统上从命令行运行测试时我在STDOUT上运行测试结果,因为它正在运行,但是当我尝试使用perl harness.pl |捕获输出到文件以及STDOUT结果缓冲和显示只在最后,我试着传递一个新的文件句柄,但结果仍然被写入到文件之前缓冲,有没有办法缓冲输出,我有一个长期运行的套件,并希望在测试运行的同时查看结果以及捕获输出。TAP ::线束perl测试tee输出
TAP ::线束版本3.22和perl版本5.8.8
这里是示例代码 harness.pl
#!/usr/bin/perl
use strict;
use warnings;
use TAP::Harness;
$|++;
my @tests = ('del.t',);
my $harness = TAP::Harness->new({
verbosity => 1,
});
$harness->runtests(@tests);
和测试del.t
use Test::More qw /no_plan/;
$|++;
my $count =1;
for (1 ..20) {
ok ($count ++ == $_, "Pass $_");
sleep 1 if ($count % 5 == 0) ;
}
答
使用script
而不是tee
做你想做的事:
script -c 'perl harness.pl' file
找到一个简单的变化,使T恤的工作,以及:指定formatter_class
:
my $harness = TAP::Harness->new({
verbosity => 1,
formatter_class => 'TAP::Formatter::Console',
});
这是因为TAP::Harness
通常使用不同的默认的,如果输出是不是tty,这是什么原因造成你看到的缓冲。