O que é o PHPUnit e para que serve?
O PHPUnit é uma ferramenta de teste de unidade para a linguagem de programação PHP. É utilizado para testar partes individuais do código-fonte, de forma que possam ser identificados erros ou problemas. Isso permite que os desenvolvedores possam detectar e corrigir problemas antes de submeter o código para integração contínua ou implantação.
Além disso, o uso do PHPUnit é essencial para manter um código saudável e garantir que as mudanças realizadas nas funcionalidades existentes não gerem regressões que afetem outras partes do código.
Como instalar o PHPUnit no Symfony?
Existem duas maneiras de instalar o PHPUnit no Symfony: por meio do Composer ou manualmente.
Para instalar via Composer, basta rodar o comando composer require --dev phpunit/phpunit na raiz do projeto. Se estiver usando um projeto maior no Symfony, é recomendado adicionar um arquivo de configuração PHPUnit na pasta ‘app’ para definir diretórios extras de carregamento automático e configurar o ambiente de teste.
Para instalar manualmente, é necessário baixar a última versão do código-fonte do PHPUnit e incluir o arquivo ‘phpunit.php’ no diretório especificado em seu arquivo PATH.
Como criar um teste unitário no Symfony com PHPUnit?
Para criar um teste unitário no Symfony com PHPUnit, é necessário seguir algumas etapas:
- Comece criando um arquivo de teste em um local específico, como o diretório ‘tests’ da raiz do projeto;
- Escolha a classe que deseja testar;
- Implemente um método de teste, utilizando as funções PHPUnit para verificar o comportamento esperado da classe;
- Execute o teste com o comando
phpunitno terminal; - Analise e corrija erros;
- Repita os passos anteriores até que todos os testes estejam passando.
Como executar um teste unitário específico com o PHPUnit?
Para executar um teste unitário específico com o PHPUnit, é necessário incluir o nome da classe de teste, juntamente com o nome do método a ser executado, na linha de comando. Por exemplo, se quisermos executar apenas o método ‘testAlgumaFuncionalidade’ em uma classe de teste chamada ‘TestAlgumRecurso’, basta inserir o comando phpunit TestAlgumRecurso::testAlgumaFuncionalidade no terminal.
Como executar todos os testes unitários com o PHPUnit?
Para executar todos os testes unitários com o PHPUnit, basta ir até o diretório de testes e executar o comando phpunit no terminal. Isso vai executar todos os testes encontrados no diretório e seus subdiretórios.
Você também pode executar um conjunto específico de testes incluindo o comando --filter, seguido pelo nome do conjunto de testes que você quer executar. Por exemplo: phpunit --filter TesteAlgumRecurso.
Como fazer log de testes com o PHPUnit?
O PHPUnit possui uma funcionalidade de log de teste que permite que você registre os resultados em arquivos XML, JSON, texto ou CSV. Para habilitar o log, você deve passar o caminho para o arquivo de log ao comando Mock objects são objetos falsos que podem ser utilizados ao testar classes com dependências em outros objetos. O PHPUnit permite que você utilize mock objects para simular comportamento, de forma que você possa testar suas classes isoladamente. Para criar mock objects com PHPUnit, basta chamar o método phpunit, utilizando o comando --log-junit seguido do nome do arquivo. Exemplo: phpunit --log-junit resultados_testes.xml
Como utilizar mock objects com PHPUnit no Symfony?
getMock do objeto PHPUnit_Framework_TestCase e passar o nome da classe que deseja simular, seguido de uma lista de métodos a serem simulados. Exemplo:$mockAlgumaClasse = $this->getMock('AlgumaClasse', ['metodoTesteUm', 'metodoTesteDois']);
Como fazer testes de integração com o PHPUnit no Symfony?
Os testes de integração testam a interação entre partes do sistema, diferentemente dos testes unitários que isolam um pedaço do código. Para fazer testes de integração com PHPUnit no Symfony, você deve utilizar um banco de dados limpo, já que isso vai garantir que os testes correspondam com a realidade.
Para criar um teste de integração, siga estes passos:
- Crie uma mock entity manager e substitua o entity manager padrão do Symfony;
- Configure o repositório para utilizar a mock entity manager;
- Crie instâncias do sistema em teste, envolvendo os serviços relevantes;
- Chame os métodos relevantes nessas instâncias e compare com os resultados esperados.
Como criar testes assíncronos com PHPUnit no Symfony?
O PHPUnit suporta testes assíncronos, que são testes que envolvem procedimentos de longa duração, como chamadas assíncronas a outras partes do sistema ou execuções do banco de dados. Você pode usar testes assíncronos para testar a comunicação entre diferentes partes do seu aplicativo Symfony.
Para criar testes assíncronos, é necessário adicionar o prefixo 'test' ao nome do método e anotá-lo com @group seguido pelo nome de um grupo de testes assíncronos. Para executar testes assíncronos, você deve acrescentar a opção --process-isolation à linha de comando.
Por exemplo, aqui está um simples método de teste assíncrono:
/**
* @group async
*/
public function testAlgumaCoisaAssincrona()
{
$this->assertTrue(true);
}
Como utilizar o PHPUnit com o Symfony Flex?
O Symfony Flex é um conjunto de componentes que visa facilitar a instalação e configuração de pacotes do Symfony. Para usar o PHPUnit com o Symfony Flex, é necessário adicionar a dependência do PHPUnit ao 'composer.json' do projeto:
"require-dev": { "phpunit/phpunit": "^8.5" }
Depois de executar o comando composer update, o arquivo XML Racine de configuração do PHPUnit será gerado na pasta 'bin', onde você pode definir diretórios extras de carregamento automático e outras configurações de teste.