2011-02-23 5 views
2

TAP :: Harness를 사용하여 테스트를 실행하고 있습니다. Linux 시스템의 명령 행에서 테스트를 실행할 때 실행되는 STDOUT에서 테스트 결과를 얻습니다.하지만 시도 할 때 perl harness.pl을 사용하여 STDOUT뿐만 아니라 파일로 출력을 캡처하십시오. tee out.tap 결과가 버퍼링되고 끝에 만 표시됩니다. 새 파일 핸들을 전달하려고 시도했지만 결과가 여전히 파일에 기록되기 전에 버퍼링됩니다. 출력을 버퍼링하지 않는 방법이 있습니까? 장기 실행 스위트이며 테스트가 실행되는 동안 출력을 캡처하는 동안 결과를보고 싶습니다.TAP :: Harness perl 테스트 티 출력

TAP :: 하네스 버전 3.22와 펄 버전 여기 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); 

및 사용

use Test::More qw /no_plan/; 
$|++; 

my $count =1; 
for (1 ..20) { 
    ok ($count ++ == $_, "Pass $_"); 
    sleep 1 if ($count % 5 == 0) ; 
} 

답변

5

del.t 테스트입니다 tee 대신 script을 입력하십시오.

script -c 'perl harness.pl' file 

뿐만 아니라 티를 작동하게하는 간단한 변화를 찾았 지정하십시오 formatter_class : 출력의 원인이 무엇 인 청각 장애,없는 경우 일반적으로 다른 기본 하나를 사용하는 TAP::Harness 때문에

my $harness = TAP::Harness->new({ 
    verbosity => 1, 
    formatter_class => 'TAP::Formatter::Console', 
}); 

입니다 당신이보고있는 버퍼링.

관련 문제