2013-02-17 5 views
1

Mojolicious 응용 프로그램에 대한 여러 가지 테스트가 있는데 모든 것이 제대로 작동하고 Mojolicious가 JUnit XML로 출력되도록 노력하고 있습니다. 정확히 내가 원하는 것 같아 보이는 TAP::Formatter::JUnit을 찾았지만 사용하기 위해 Mojolicious 테스트 (내 응용 프로그램의 루트 수준에서 그냥 script/site.pl test 실행)를 얻는 방법을 파악하지 못했습니다.Mojolicious 테스트에서 TAP :: Formatter :: JUnit 사용?

JUnit XML로 출력하려면 Mojolicious의 내장 테스트 기능을 사용할 수 없습니까?

답변

2

나는 Mojolicious::Command::test을 조사했으며 테스트 스위트를 실행하려면 Test::Harness을 사용하고 있습니다. 모듈은 TAP::Harness의 래퍼이며, formatter 매개 변수를 설정해야합니다. 매개 변수를 푸시하는 방법을 찾지 못했습니다 (HARNESS_OPTIONS과 같은 환경 변수가 있지만 매개 변수를 허용하지 않았습니다).

new command for your application을 구현하는 것입니다. 나는, 새로운 Mojolicious 응용 프로그램을 만들어 위의 응용 프로그램 시작에 가이드 당 새 명령 네임 스페이스를 추가 :

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

: 난 그냥 run 방법의 마지막 라인을 JUnit::Command::testjunitMojolicious::Command::test를 복사 및 교체

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

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

16,이 출력 결과 :이 도움이

<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)로 제기되었습니다. – VirtualWolf

+0

@VirtualWolf - 도움이 되니 기쁩니다. 문제를 제기하면 테스트 명령이 향상 될 수 있으므로 많은 노력없이 대체 포맷터를 사용할 수 있습니다. – bvr

관련 문제