Ter várias asserções no mesmo teste é bom, mas quando uma asserção falha, todo o teste é cancelado e outras asserções no mesmo teste não são testadas.
Dependendo do que você testa e de como você o codificou, você pode querer dividir alguns testes em vários subtestes.
OverAssertive é uma extensão do PHPUnit que informa diretamente no console quais testes possuem asserções "demais", onde "demais" é o que você define, para ajudá-lo a inspecionar e talvez refatorar alguns testes.
Habilite-o com todos os padrões adicionando o seguinte ao arquivo phpunit.xml
do seu conjunto de testes:
<phpunit bootstrap="vendor/autoload.php"> ... <ouvintes> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" /> </ouvintes> </phpunit>
Se não estiver usando um autoloader, você também pode especificar o local da biblioteca:
<phpunit bootstrap="boostrap.php"> ... <ouvintes> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" file="/caminho/para/OverAssertiveTestsListener.php" /> </ouvintes> </phpunit>
Agora execute seu conjunto de testes normalmente. OverAssertive reportará testes assertivos no console após a conclusão do conjunto.
OverAssertive possui dois parâmetros configuráveis:
alertThreshold - Número de asserções que farão um teste sobre assertivo (padrão: 10 asserções)
reportLength - Número de testes super assertivos incluídos no relatório (padrão: 10 testes)
Esses parâmetros de configuração são definidos em phpunit.xml
ao adicionar o ouvinte:
<phpunit ...><!-- ... outra configuração de suíte aqui ... --><listeners> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener"> <argumentos> <matriz> <element key="alertThreshold"> <inteiro>10</inteiro> </elemento> <element key="reportLength"> <inteiro>10</inteiro> </elemento> </array> </argumentos> </ouvinte> </ouvintes> </phpunit>
Muito obrigado ao phpunit-speedtrap
Faça o que você quiser.