У меня есть набор скриптов, которые создают JUnit для Jenkins.TAP :: Проблемы с синхронизацией с помощью TAP :: 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, похоже, ошибочен. Согласно инструкциям сна (2), он должен был сообщить 2s.
Есть ли способ получить синхронизацию в файле JUnit?
Попробуйте переместить сон вниз несколько строк, прямо перед вызовом 'is_eq' – chilemagic
Пробовал уже, это ничего не изменит. Как побочная заметка, инструкция «сна» находится здесь, чтобы указать «хорошо, я сделал большой тест, требующий времени». – peroumal1