/ / Utiliser TAP :: Formatter :: JUnit avec les tests Mojolicious? - perl, testing, mojolicious

Utiliser TAP :: Formatter :: JUnit avec les tests Mojolicious? - perl, testing, mojolicious

J'ai plusieurs tests pour mon application Mojolicious et tout fonctionne correctement. Maintenant, j'essaie de faire en sorte que Mojolicious soit exporté vers JUnit XML. TAP::Formatter::JUnit qui ressemble à cela, c’est exactement ce que je veux, mais je ne comprends pas comment obtenir les tests de Mojolicious script/site.pl test à partir du niveau racine de mon application) pour l'utiliser.

Est-ce que je manque quelque chose d'évident, ou est-ce que je ne peux pas utiliser la fonctionnalité de test intégrée de Mojolicious si je veux qu'elle soit sortie au format JUnit XML?

Réponses:

2 pour la réponse № 1

J'ai regardé Mojolicious :: Command :: test et il utilise Test::Harness pour exécuter la suite de tests. Le module est terminé TAP::Harness, dont formatter paramètre que nous devons définir. Je n ’" ai trouvé aucun moyen de pousser le paramètre à travers (il y a des variables d’environnement comme HARNESS_OPTIONS, mais ils n’ont pas permis le paramètre).

Ce que vous pouvez faire est de mettre en œuvre nouvelle commande pour votre application. J'ai créé une nouvelle application Mojolicious, ajouté un nouvel espace de nom de commande conformément au guide ci-dessus au démarrage de l'application:

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

Puis je viens de copier Mojolicious::Command::test dans JUnit::Command::testjunit et remplacé les dernières lignes de run méthode:

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

avec

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

L'exécuter en tant que

perl script/junit_test testjunit

a abouti à cette sortie:

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

J'espère que cela t'aides.