1

我对我的 Mojolicious 应用程序进行了许多测试,并且一切正常,现在我正试图让 Mojolicious 输出到 JUnit XML。我发现TAP::Formatter::JUnit它看起来正是我想要的,但我没有掌握如何让 Mojolicious 测试(仅从script/site.pl test我的应用程序的根级别运行)来使用它。

我是否遗漏了一些显而易见的东西,或者如果我想将 Mojolicious 的内置测试功能输出到 JUnit XML,我是否无法使用它?

4

1 回答 1

2

我查看了Mojolicious::Command::test并使用它Test::Harness来运行测试套件。该模块是 wrapper over ,我们需要设置TAP::Harness其参数。formatter我还没有找到任何方法来推动参数(有类似的环境变量HARNESS_OPTIONS,但它们不允许参数)。

您可以做的是为您的应用程序实现新命令。我创建了新的 Mojolicious 应用程序,在应用程序启动时按照上面的指南添加了新的命令命名空间:

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

然后我只是复制并替换了最后Mojolicious::Command::testJUnit::Command::testjunitrun方法:

$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>

希望这可以帮助。

于 2013-02-17T07:58:52.877 回答