gpt4 book ai didi

perl - 将 TAP::Formatter::JUnit 与 Mojolicious 测试一起使用?

转载 作者:行者123 更新时间:2023-11-28 20:32:17 24 4
gpt4 key购买 nike

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

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

最佳答案

我调查了 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>

希望这对您有所帮助。

关于perl - 将 TAP::Formatter::JUnit 与 Mojolicious 测试一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14918266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com