2013-02-17 4 views
1

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

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

ответ

2

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

Что вы можете сделать, так это реализовать new command for your application. Я создал новое приложение 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> 

Надеется, что это помогает.

+0

Это сработало отлично, спасибо вам большое! :) – VirtualWolf

+0

Поднял вопрос [здесь] (https://github.com/kraih/mojo/issues/454), чтобы иметь возможность указать formatters. – VirtualWolf

+0

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

Смежные вопросы