我查看了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>
希望这会有所帮助。