1

Mojolicious アプリケーションのテストをいくつか行ったところ、すべて正常に動作しました。現在、Mojolicious を JUnit XML に出力しようとしています。TAP::Formatter::JUnitまさに私が望んでいるように見えるものを見つけましたが、それを使用する Mojolicious テスト (script/site.pl testアプリケーションのルート レベルからのみ実行) を取得する方法を把握していません。

それとも、JUnit XML に出力したい場合に Mojolicious の組み込みテスト機能を使用できないのでしょうか?

4

1 に答える 1

2

Mojolicious::Command::testを調べたTest::Harnessところ、テストスイートの実行に使用されています。モジュールはラッパーでTAP::Harnessあり、そのformatterパラメーターを設定する必要があります。パラメータをプッシュする方法が見つかりませんでした( のような環境変数がありますがHARNESS_OPTIONS、パラメータを許可しませんでした)。

あなたができることは、アプリケーションに新しいコマンドを実装することです。新しい Mojolicious アプリケーションを作成し、アプリケーションの起動時に上記のガイドに従って新しいコマンド名前空間を追加しました。

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

次に、メソッドの最後の行をコピーMojolicious::Command::testJUnit::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>

お役に立てれば。

于 2013-02-17T07:58:52.877 に答える