2010-10-14 2 views
1

J'ai donc beaucoup de tests PHPUnit (ils sont en fait des tests Selenium fonctionnant comme des tests PHPUnit). Quand je les exécuter à partir de la ligne de commande, je reçois ce genre de rapport que les tests complets:Comment intégrer PHPUnit pour contrôler les rapports de ligne de commande?

..E..F..E.FF... 

Ensuite, je dois attendre jusqu'à ce que tous les tests finissent en cours d'exécution avant qu'il me dire les erreurs et ce qui a échoué. Je voudrais être en mesure de contrôler cela afin que je puisse faire des rapports plus utiles. Par exemple:

testLogin ....... passed 
testFoobar ...... failed 
    - Failed asserting that foo = true on line 123 
testBazbat ...... passed 

Comment puis-je contrôler comment PHPUnit affiche les résultats? PHPUnit a quelques paramètres de ligne de commande pour contrôler le format de sortie.

Répondre

4

Les plus utiles pour votre --testdox sont et --tap

Ils fonctionnent comme ceci:

]> phpunit --tap FooTest.php 
TAP version 13 
not ok 1 - Failure: FooTest::test_add 
    --- 
    message: fark 
    severity: fail 
    ... 
ok 2 - FooTest::test_exists 
ok 3 - FooTest::test_show_html 
ok 4 - FooTest::test_show_array 
ok 5 - FooTest::test_show_empty 
ok 6 - FooTest::test_find 
1..6 


]> phpunit --testdox FooTest.php 
PHPUnit 3.5.0 by Sebastian Bergmann. 

Foo 
[ ] test add 
[x] test exists 
[x] test show html 
[x] test show array 
[x] test show empty 
[x] test find 

Comme vous pouvez le voir --testdox ne montre pas la raison de l'échec, son ment à utiliser comme une sorte de générateur de spécifications. Mais --tap vient assez proche. Et vous pouvez toujours écrire votre propre écouteur de test - une classe personnalisée qui implémente l'interface PHPUnit_Framework_Testlistener (a des méthodes comme startTest, endTest, addFailure, addError, etc, les noms sont assez explicites, le code respectif sera appelé pour les événements qui arriver quand votre suite de tests s'exécute).

Un tel code est connecté à phpunit à l'aide du fichier de configuration xml.

Un bon exemple de l'auditeur personnalisé peut être consulté ici: http://raphaelstolt.blogspot.com/2010/06/growling-phpunits-test-status.html

+0

Merci. C'est vraiment utile. Pourriez-vous élaborer un peu plus sur ce que vous entendez par "auditeur de test" et "chargeur"? C'est peut-être là que je veux aller, mais je ne saurais pas par où commencer. – Andrew

+0

J'ai édité la réponse avec plus de détails sur les auditeurs de test. Le chargeur de test personnalisé n'est en fait pas du tout pertinent pour votre problème, j'ai donc supprimé cette partie. –

+0

Merci pour la mise à jour, cet article de blog va vraiment aider! – Andrew

0

Si vous voulez jolies pages de rapport HTML, essayez d'utiliser phing est la tâche phpunitreport. Pour les captures d'écran, voir my blog entry. Très utile pour les grandes suites de test.

1

utiliser le

--printer path/to/MyTestListener 

option pour pointer vers votre classe MyTestListener personnalisée http://www.phpunit.de/manual/3.6/en/textui.html#textui.clioptions

ou il peut être défini dans votre fichier de configuration phpunit.xml avec le printerClass propriété

voir

Voici les instructions pour faire votre propre classe d'imprimantes http://www.phpunit.de/manual/current/en/extending-phpunit.html#extending-phpunit.examples.SimpleTestListener.php

Si vous ne voulez pas commencer à partir de zéro simplement renommer et modifier l'imprimante par défaut https://github.com/sebastianbergmann/phpunit/blob/master/PHPUnit/TextUI/ResultPrinter.php

Questions connexes