PHPUnit peut produire plusieurs types de fichiers de journalisations (logs).
Le fichier de journalisation XML pour les tests produits par PHPUnit est basé sur celui
qui est utilisé par la tâche
JUnit
de l'outil Apache Ant. L'exemple suivant montre que le fichier
de journalisation XML généré pour les tests dans
TestTableau
:
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite name="TestTableau" file="/home/sb/TestTableau.php" tests="2" assertions="2" failures="0" errors="0" time="0.016030"> <testcase name="testLeNouveauTableauEstVide" class="TestTableau" file="/home/sb/TestTableau.php" line="6" assertions="1" time="0.008044"/> <testcase name="testLeTableauContientUnElement" class="TestTableau" file="/home/sb/TestTableau.php" line="15" assertions="1" time="0.007986"/> </testsuite> </testsuites>
Le fichier de journalisation XML suivant a été généré pour deux tests,
testEchec
et testErreur
,
à partir d'une classe de cas de test nommée EchecErreurTest
et
montre comment les échecs et les erreurs sont signalés.
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite name="EchecErreurTest" file="/home/sb/EchecErreurTest.php" tests="2" assertions="1" failures="1" errors="1" time="0.019744"> <testcase name="testFailure" class="EchecErreurTest" file="/home/sb/EchecErreurTest.php" line="6" assertions="1" time="0.011456"> <failure type="PHPUnit_Framework_ExpectationFailedException"> testFailure(EchecErreurTest) Failed asserting that <integer:2> matches expected value <integer:1>. /home/sb/EchecErreurTest.php:8 </failure> </testcase> <testcase name="testError" class="EchecErreurTest" file="/home/sb/EchecErreurTest.php" line="11" assertions="0" time="0.008288"> <error type="Exception">testError(EchecErreurTest) Exception: /home/sb/EchecErreurTest.php:13 </error> </testcase> </testsuite> </testsuites>
Le protocole Test Anything Protocol (TAP)
est une interface Perl simple au format texte entre les modules de test. L'exemple
suivant montre le fichier de journalisation TAP généré pour les tests de
TableauTest
:
TAP version 13 ok 1 - testNouveauTableauEstVide(TableauTest) ok 2 - testTableauContientUnElement(TableauTest) 1..2
Le fichier de journalisation TAP a été généré pour deux tests,
testEchec
et testErreur
à partir d'une classe de cas de test nommée EchecErreurTest
et
montre comme les échecs et les erreurs sont signalés.
TAP version 13 not ok 1 - Failure: testEchec(EchecErreurTest) --- message: 'Failed asserting that <integer:2> matches expected value <integer:1>.' severity: fail data: got: 2 expected: 1 ... not ok 2 - Error: testErreur(EchecErreurTest) 1..2
La notation objet JavaScript (JavaScript Object Notation ou JSON)
est un format léger d'échange de données. L'exemple suivant montre les messages JSON
générés pour les tests dans TableauTest
:
{"event":"suiteStart","suite":"TableauTest","tests":2} {"event":"test","suite":"TableauTest", "test":"testNouveauTableauEstVide(TableauTest)","status":"pass", "time":0.000460147858,"trace":[],"message":""} {"event":"test","suite":"TableauTest", "test":"testTableauContientUnElement(TableauTest)","status":"pass", "time":0.000422954559,"trace":[],"message":""}
Les messages JSON suivants ont été générés pour deux tests,
testEchec
et testErreur
,
d'une classe de cas de test nommée EchecErreurTest
et
monte comment les échecs et les erreurs sont signalées.
{"event":"suiteStart","suite":"EchecErreurTest","tests":2} {"event":"test","suite":"EchecErreurTest", "test":"testEchec(EchecErreurTest)","status":"fail", "time":0.0082459449768066,"trace":[], "message":"Failed asserting that <integer:2> is equal to <integer:1>."} {"event":"test","suite":"EchecErreurTest", "test":"testErreur(EchecErreurTest)","status":"error", "time":0.0083.90152893066,"trace":[],"message":""}
La journalisation au format XML des informations de couverture de code produite par PHPUnit
est faiblement basé sur celui utilisé par
Clover. L'exemple suivant montre le fichier de journalisation XML
généré pour les tests dans CompteBancaireTest
:
<?xml version="1.0" encoding="UTF-8"?> <coverage generated="1184835473" phpunit="3.6.0"> <project name="CompteBancaireTest" timestamp="1184835473"> <file name="/home/sb/CompteBancaire.php"> <class name="CompteBancaireException"> <metrics methods="0" coveredmethods="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> </class> <class name="CompteBancaire"> <metrics methods="4" coveredmethods="4" statements="13" coveredstatements="5" elements="17" coveredelements="9"/> </class> <line num="77" type="method" count="3"/> <line num="79" type="stmt" count="3"/> <line num="89" type="method" count="2"/> <line num="91" type="stmt" count="2"/> <line num="92" type="stmt" count="0"/> <line num="93" type="stmt" count="0"/> <line num="94" type="stmt" count="2"/> <line num="96" type="stmt" count="0"/> <line num="105" type="method" count="1"/> <line num="107" type="stmt" count="1"/> <line num="109" type="stmt" count="0"/> <line num="119" type="method" count="1"/> <line num="121" type="stmt" count="1"/> <line num="123" type="stmt" count="0"/> <metrics loc="126" ncloc="37" classes="2" methods="4" coveredmethods="4" statements="13" coveredstatements="5" elements="17" coveredelements="9"/> </file> <metrics files="1" loc="126" ncloc="37" classes="2" methods="4" coveredmethods="4" statements="13" coveredstatements="5" elements="17" coveredelements="9"/> </project> </coverage>
Sortie de couverture de code humainement lisible pour la ligne de commandes ou un fichier texte.
Le but de ce format de sortie est de fournir un aperçu rapide de couverture
en travaillant sur un petit ensemble de classes. Pour des projets plus grand
cette sortie peut être utile pour obtenir un aperçu rapide de la couverture
des projets ou quand il est utilisé avec la fonctionnalité
--filter
.
Quand c'est utilisé à partir de la ligne de commande en écrivant sur
php://stdout
, cela prend en compte le réglage
--colors
.
Ecrire sur la sortie standard est l'option par défaut quand on utilise la ligne
de commandes.
Par défaut, ceci ne montrera que les fichiers qui ont au moins une ligne couverte.
Ceci peut être modifié via l'option de configuration xml
showUncoveredFiles
Voir la section intitulée « Journalisation ».