Os atributos do elemento <phpunit> podem ser usados para configurar a funcionalidade do núcleo do PHPUnit.
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
<!--bootstrap="/caminho/para/bootstrap.php"-->
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
<!--printerFile="/caminho/para/ResultPrinter.php"-->
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
<!--testSuiteLoaderFile="/caminho/para/StandardTestSuiteLoader.php"-->
strict="false"
verbose="false">
<!-- ... -->
</phpunit>A configuração XML acima corresponde ao comportamento padrão do executor de teste TextUI documentado na seção chamada “Comutadores de linha-de-comando”.
Opções adicionais que não estão disponíveis como comutadores em linha-de-comando são:
convertNoticesToExceptions, convertWarningsToExceptions, convertErrorsToExceptionsPode ser usado para desligar a conversão automática de cada notificação/aviso/erro do PHP em uma exceção.
forceCoversAnnotation
A Cobertura de Código só será gravada para testes que usem a anotação
@covers documentada na seção chamada
“@covers”.
O elemento <testsuites> e seu(s) um ou mais filhos <testsuite> podem ser usados para compor uma suíte de teste fora das suítes e casos de teste.
<testsuites> <testsuite name="Minha Suíte de Testes"> <directory>/caminho/para/arquivos/*Test.php</directory> <file>/caminho/para/MeuTest.php</file> <exclude>/caminho/para/excluidos</exclude> </testsuite> </testsuites>
Usando os atributos phpVersion e
phpVersionOperator uma versão exigida do PHP pode ser especificada. O exemplo abaixo só vai adicionar os arquivos
/caminho/para/*Test.php e
/caminho/para/MeuTest.php se a versão do PHP for no mínio 5.3.0.
<testsuites> <testsuite name="Minha Suíte de Testes"> <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">/caminho/para/arquivos</directory> <file phpVersion="5.3.0" phpVersionOperator=">=">/caminho/para/MeuTest.php</file> </testsuite> </testsuites>
O atributo phpVersionOperator é opcional e padronizado para >=.
O elemento <groups> e seus filhos
<include>,
<exclude>, e
<group> podem ser usados para selecionar grupos de testes de uma suíte de testes que (não) deveriam ser executadas.
<groups> <include> <group>nome</group> </include> <exclude> <group>nome</group> </exclude> </groups>
A configuração XML acima corresponde a invocar o executor de testes TextUI com os seguintes comutadores:
--group nome
--exclude-group nome
O elemento <filter> e seus filhos podem ser usados para configurar a lista-negra e lista-branca para o relatório de cobertura de código.
<filter> <blacklist> <directory suffix=".php">/caminho/para/arquivos</directory> <file>/path/to/file</file> <exclude> <directory suffix=".php">/caminho/para/arquivos</directory> <file>/caminho/para/arquivo</file> </exclude> </blacklist> <whitelist processUncoveredFilesFromWhitelist="true"> <directory suffix=".php">/caminho/para/arquivos</directory> <file>/caminho/para/arquivo</file> <exclude> <directory suffix=".php">/caminho/para/arquivos</directory> <file>/caminho/para/arquivo</file> </exclude> </whitelist> </filter>
O elemento <logging> e seus filhos
<log> podem ser usados para configurar o registro da execução de teste.
<logging> <log type="coverage-html" target="/tmp/report" charset="UTF-8" highlight="false" lowUpperBound="35" highLowerBound="70"/> <log type="coverage-clover" target="/tmp/coverage.xml"/> <log type="coverage-php" target="/tmp/coverage.serialized"/> <log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/> <log type="json" target="/tmp/logfile.json"/> <log type="tap" target="/tmp/logfile.tap"/> <log type="junit" target="/tmp/logfile.xml" logIncompleteSkipped="false"/> <log type="testdox-html" target="/tmp/testdox.html"/> <log type="testdox-text" target="/tmp/testdox.txt"/> </logging>
A configuração XML acima corresponde a invocar o executor de teste TextUI com os seguintes comutadores:
--coverage-html /tmp/report
--coverage-clover /tmp/coverage.xml
--coverage-php /tmp/coverage.serialized
--coverage-text
--log-json /tmp/logfile.json
> /tmp/logfile.txt
--log-tap /tmp/logfile.tap
--log-junit /tmp/logfile.xml
--testdox-html /tmp/testdox.html
--testdox-text /tmp/testdox.txt
Os atributos charset, highlight,
lowUpperBound, highLowerBound,
logIncompleteSkipped e
showUncoveredFiles não possuem comutador TextUI equivalente.
charset: Conjunto de caracteres a ser usado para as páginas HTML geradas.
highlight: Quando definidos como true, o código em seus relatórios de cobertura terá a sintaxe destacada.
lowUpperBound: Máxima porcentagem de cobertura para ser considerado de "baixamente" coberto.
highLowerBound: Mínima porcentagem de cobertura para ser considerado "altamente" coberto.
O elemento <listeners> e seus filhos
<listener> podem ser usados para anexar ouvintes adicionais de teste para a execução dos testes.
<listeners> <listener class="MeuOuvinte" file="/caminho/opcional/para/MeuOuvinte.php"> <arguments> <array> <element key="0"> <string>Sebastian</string> </element> </array> <integer>22</integer> <string>Abril</string> <double>19.78</double> <null/> <object class="stdClass"/> </arguments> </listener> </listeners>
A configuração XML acima corresponde a anexar o objeto
$ouvinte (veja abaixo) à execução de teste:
$ouvinte = new MeuOuvinte(
array('Sebastian'),
22,
'Abril',
19.78,
NULL,
new stdClass
);
O elemento <php> e seus filhos podem ser usados para definir configurações, constantes e variáveis globais do PHP. Também pode ser usado para preceder o include_path.
<php> <includePath>.</includePath> <ini name="foo" value="bar"/> <const name="foo" value="bar"/> <var name="foo" value="bar"/> <env name="foo" value="bar"/> <post name="foo" value="bar"/> <get name="foo" value="bar"/> <cookie name="foo" value="bar"/> <server name="foo" value="bar"/> <files name="foo" value="bar"/> <request name="foo" value="bar"/> </php>
A configuração XML acima corresponde ao seguinte código PHP:
ini_set('foo', 'bar');
define('foo', 'bar');
$GLOBALS['foo'] = 'bar';
$_ENV['foo'] = 'bar';
$_POST['foo'] = 'bar';
$_GET['foo'] = 'bar';
$_COOKIE['foo'] = 'bar';
$_SERVER['foo'] = 'bar';
$_FILES['foo'] = 'bar';
$_REQUEST['foo'] = 'bar';
O elemento <selenium> e seus filhos
<browser> podem ser usados para configurar uma lista de servidores Selenium RC.
<selenium> <browser name="Firefox no Linux" browser="*firefox /usr/lib/firefox/firefox-bin" host="my.linux.box" port="4444" timeout="30000"/> </selenium>
O arquivo de configuração XML acima corresponde ao seguinte código PHP:
class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
public static $navegadores = array(
array(
'name' => 'Firefox no Linux',
'browser' => '*firefox /usr/lib/firefox/firefox-bin',
'host' => 'my.linux.box',
'port' => 4444,
'timeout' => 30000
)
);
// ...
}