Использование TAP::Formatter::JUnit с тестами Mojolicious?

У меня есть ряд тестов для моего приложения Mojolicious, и все работает нормально, и теперь я пытаюсь заставить Mojolicious выводить данные в JUnit XML. Я нашел TAP::Formatter::JUnit, похоже, это именно то, что мне нужно, но я не понимаю, как заставить тесты Mojolicious (запускаемые только script/site.pl test с корневого уровня моего приложения) использовать это.

Я упускаю что-то слепо очевидное, или я не могу использовать встроенную функцию тестирования Mojolicious, если я хочу, чтобы она выводилась в JUnit XML?


person VirtualWolf    schedule 17.02.2013    source источник


Ответы (1)


Я просмотрел Mojolicious::Command::test, и это используя Test::Harness для запуска набора тестов. Модуль является оберткой над TAP::Harness, чей параметр formatter нам нужно установить. Я не нашел способа, как протолкнуть параметр (есть переменные среды, такие как HARNESS_OPTIONS, но они не позволяют использовать параметр).

Что вы можете сделать, так это реализовать новую команду для своего приложения. Я создал новое приложение Mojolicious, добавил новое пространство имен команд в соответствии с приведенным выше руководством при запуске приложения:

push @{$self->commands->namespaces}, 'JUnitTest::Command';

Затем я просто скопировал Mojolicious::Command::test в JUnit::Command::testjunit и заменил последние строки метода run:

$ENV{HARNESS_OPTIONS} //= 'c';
require Test::Harness;
Test::Harness::runtests(sort @args);

с участием

require TAP::Harness;
my $harness = TAP::Harness->new({
  formatter_class => 'TAP::Formatter::JUnit',
  lib   => \@INC,
  merge => 1,
});
$harness->runtests(sort @args);

Запуск как

perl script/junit_test testjunit

привел к этому результату:

<testsuites>
  <testsuite failures="0" errors="0" tests="3" name="t_basic_t">
    <testcase name="1 - get /"></testcase>
    <testcase name="2 - 200 OK"></testcase>
    <testcase name="3 - content is similar"></testcase>
    <system-out><![CDATA[1..3
ok 1 - get /
ok 2 - 200 OK
ok 3 - content is similar
]]></system-out>
    <system-err></system-err>
  </testsuite>
</testsuites>

Надеюсь это поможет.

person bvr    schedule 17.02.2013
comment
Подняли вопрос здесь, чтобы иметь возможность указывать средства форматирования. - person VirtualWolf; 17.02.2013
comment
@VirtualWolf - рад, что это помогло. Поднятие этого вопроса может привести к улучшению тестовой команды, поэтому мы можем без особых усилий использовать альтернативные средства форматирования. - person bvr; 17.02.2013