Jenkins 용 JUnit 출력을 생성하는 스크립트 세트가 있습니다.TAP :: Tatter :: Haratter와의 타이밍 문제 :: Formatter :: JUnit
내가 실행 코드 (이 당신이 아이디어를 얻을 수 있도록 단지 조각이다) 다음과 같습니다
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use TAP::Harness;
use Test::Builder;
my $runner = sub {
my ($harness,$test) = @_;
sleep(2);
my $builder = Test::Builder->new;
$builder->reset;
$builder->output(\my ($out));
$builder->failure_output(\$out);
$builder->todo_output(\$out);
$builder->is_eq($test,'test', 'Test is test');
done_testing();
return $out;
};
my $h = TAP::Harness->new({
formatter_class => 'TAP::Formatter::JUnit',
merge => 1,
exec => $runner,
verbosity => 1,
timer => 1,
});
$h->runtests(['test']);
내가 통역으로이 프로그램을 실행할 때, 나는 다음과 같은 출력을 얻을 :
<testsuites>
<testsuite failures="0"
errors="0"
time="0.000340938568115234"
tests="1"
name="test">
<testcase time="9.79900360107422e-05" name="1 - Test is test"></testcase>
<testcase time="8.29696655273438e-05" name="(teardown)" />
<system-out><![CDATA[ok 1 - Test is test
1..1
]]></system-out>
<system-err></system-err>
</testsuite>
</testsuites>
을
여기서 중요한 문제는 JUnit 출력이 타이밍이 잘못되었다는 것입니다. sleep (2) 명령에 따라 2 초가보고되어야합니다.
JUnit 파일에서 타이밍을 얻는 방법이 있습니까?
가 수면 아래로 이동 시도 : 여기
가 출력되고 'is_eq'를 호출하기 직전 몇 줄. – chilemagic이미 시도했지만 아무 것도 바뀌지 않습니다. 부수적으로, '수면'교육은 "ok 나는 시간이 걸리는 큰 테스트를 했어요"라는 것을 나타냅니다. – peroumal1