O PHPUnit pode produzir vários tipos de arquivos de registro (logfiles).
O arquivo de registro XML para resultados de testes produzidos pelo PHPUnit é baseado naquele usado pela tarefa do JUnit para Apache Ant. O seguinte exemplo mostra o arquivo de registro XML gerado para os testes em ArrayTest
:
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite name="ArrayTest" file="/home/sb/ArrayTest.php" tests="2" assertions="2" failures="0" errors="0" time="0.016030"> <testcase name="testNewArrayIsEmpty" class="ArrayTest" file="/home/sb/ArrayTest.php" line="6" assertions="1" time="0.008044"/> <testcase name="testArrayContainsAnElement" class="ArrayTest" file="/home/sb/ArrayTest.php" line="15" assertions="1" time="0.007986"/> </testsuite> </testsuites>
O arquivo de registro XML seguinte foi gerado por dois testes,
testFailure
e testError
,
de uma classe de caso de teste chamada FailureErrorTest
e
mostra como falhas e erros são denotadas.
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite name="FailureErrorTest" file="/home/sb/FailureErrorTest.php" tests="2" assertions="1" failures="1" errors="1" time="0.019744"> <testcase name="testFailure" class="FailureErrorTest" file="/home/sb/FailureErrorTest.php" line="6" assertions="1" time="0.011456"> <failure type="PHPUnit_Framework_ExpectationFailedException"> testFailure(FailureErrorTest) Failed asserting that <integer:2> matches expected value <integer:1>. /home/sb/FailureErrorTest.php:8 </failure> </testcase> <testcase name="testError" class="FailureErrorTest" file="/home/sb/FailureErrorTest.php" line="11" assertions="0" time="0.008288"> <error type="Exception">testError(FailureErrorTest) Exception: /home/sb/FailureErrorTest.php:13 </error> </testcase> </testsuite> </testsuites>
O Test Anything Protocol (TAP)
é uma interface simples baseada em texto do Perl entre módulos de teste. O seguinte exemplo mostra o arquivo de registro TAP gerado para os testes em
ArrayTest
:
TAP version 13 ok 1 - testNewArrayIsEmpty(ArrayTest) ok 2 - testArrayContainsAnElement(ArrayTest) 1..2
O seguinte arquivo de registro TAP foi gerado para dois testes,
testFailure
e testError
,
de uma classe de caso de teste chamada FailureErrorTest
e
e mostra como falhas e erros são denotados.
TAP version 13 not ok 1 - Failure: testFailure(FailureErrorTest) --- message: 'Failed asserting that <integer:2> matches expected value <integer:1>.' severity: fail data: got: 2 expected: 1 ... not ok 2 - Error: testError(FailureErrorTest) 1..2
O JavaScript Object Notation (JSON)
é um formato leve de intercâmbio de dados. O seguinte exemplo mostra as mensagem JSON geradas para os testes em ArrayTest
:
{"event":"suiteStart","suite":"ArrayTest","tests":2} {"event":"test","suite":"ArrayTest", "test":"testNewArrayIsEmpty(ArrayTest)","status":"pass", "time":0.000460147858,"trace":[],"message":""} {"event":"test","suite":"ArrayTest", "test":"testArrayContainsAnElement(ArrayTest)","status":"pass", "time":0.000422954559,"trace":[],"message":""}
As mensagens JSON seguintes foram geradas para dois testes,
testFailure
e testError
,
de uma classe de caso de teste chamada FailureErrorTest
e
mostra como falhas e erros são denotados.
{"event":"suiteStart","suite":"FailureErrorTest","tests":2} {"event":"test","suite":"FailureErrorTest", "test":"testFailure(FailureErrorTest)","status":"fail", "time":0.0082459449768066,"trace":[], "message":"Failed asserting that <integer:2> is equal to <integer:1>."} {"event":"test","suite":"FailureErrorTest", "test":"testError(FailureErrorTest)","status":"error", "time":0.0083.90152893066,"trace":[],"message":""}
O arquivo de registro no formato XML para informação de cobertura de código produzido pelo PHPUnit é amplamente baseado naquele usado pelo
Clover. O seguinte exemplo mostra o arquivo de registro XML gerado para os testes em ContaBancariaTest
:
<?xml version="1.0" encoding="UTF-8"?> <coverage generated="1184835473" phpunit="3.6.0"> <project name="ContaBancariaTest" timestamp="1184835473"> <file name="/home/sb/ContaBancariaTest.php"> <class name="ExcecaoContaBancaria"> <metrics methods="0" coveredmethods="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> </class> <class name="ContaBancaria"> <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>
Saída de cobertura de código humanamente legível para linha-de-comando ou arquivo de texto. O objetivo deste formato de saída é fornecer uma rápida visão geral de cobertura enquanto se trabalha em um pequeno grupo de classes. Para maiores projetos esta saída pode ser útil para conseguir uma rápida visão geral da cobertura do projeto ou quando usado com a funcionalidade --filter
.
Quando usada da linha-de-comando escrevendo php://stdout
isso vai honrar a configuração --colors
.
Escrever em saída padrão é a opção padrão quando usado a partir da linha-de-comando. Por padrão isso só vai mostrar arquivos que tenham pelo menos uma linha coberta. Isso só pode ser alterado através da opção de configuração xml showUncoveredFiles
. Veja “Registrando”.