Sobre mim

Trabalho com programação há cerca de 5 anos, sempre interessado nas linguagens WEB (PHP, Ruby, Java, JS, etc). Atualmente desenvolvo em PHP com o CodeIgniter, utilizando metodologias ágeis, na Fortes Informática.

Páginas

11 March 2009 - 12:33Integrando PHPUnit ao CodeIgniter

Irei mostrar como consegui rodar os testes unitários no framework CodeIgniter com o PHPUnit, através de um plugin chamado CIUnit.

Não irei abordar o porque de utilizar técnicas de Desenvolvimento Orientado a Testes, Extreme Programming, etc, e nem detalhar o funcionamento do PHPUnit, que é muito similar ao JUnit. Caso seja seu primeiro contato com essas tecnologias, indico a leitura desse post.

Em primeiro lugar, precisamos instalar o PHPUnit, para isso basta executar na linha de comando “pear install phpunit/PHPUnit”, ou instalar manualmente. Como disse, não vou detalhar a instalação do PHPUnit, pois creio que fuja do tema. Caso queira, siga os passos de instalação mostrados aqui.

Feito isso, vamos a instalação do CIUnit:

1. faca o download da ultima versão do CIUnit, neste link, e abra o arquivo. Iremos encontrar a seguinte estrutura dentro do ZIP baixado:
fooStack/
tests/
índex.html
CodeIgniter.php

2. Copie a pasta fooStack para dentro do seu diretorio SeuProjeto/system/application/config/

3. Copie a pasta tests para dentro do seu diretório SeuProjeto/system/application/

4. Substitua o arquivo CodeIgniter.php no diretório SeuProjeto/system/codeigniter/ pelo contido no ZIP

5. Abra o arquivo SeuProjeto/system/application/config/database.php e substitua a linha que começa com:

$active_group =

por:

$env_used = 'default'; //Onde “default” deve ser o nome da sua base de produção
if(defined('CIUnit_Version')){
  $env_used .= '_test';
}
$active_group = $env_used;

Essa modificação faz com que todos os seus testes sejam executados utilizando as configurações do database de tests ao invés do de produção. Perceba que todos os dados são deletados quando executamos um teste. Sendo assim, muito cuidado pra não esquecer esse passo, ou você poderá perder dados de produção.

6. No mesmo arquivo do passo 5, crie as configurações do seu database de testes, usando o mesmo nome colocado a cima (default_test, no nosso casso). Para isso você pode simplesmente copiar as configurações do seu database de produção e modificar apenas o nome do database. Para isso, adicione essas linhas ao fim do seu arquivo:

// Configurações do dabase de testes
$db['default_test'] = $db['default'];
$db['default_test']['database'] = "projeto_test";

7. Crie o novo database com o sufixo _test (projeto_test, por exemplo) contendo a mesma estrutura do seu database de produção, essa base, como foi dito, será usada pra popular seus testes quando estes acessarem um banco de dados.

Pronto! agora para executar os testes, abra a linha de comando e digite:

  • Para executar todos os testes: phpunit AllTests.php
  • Para executar um grupo de testes (Todos os models, por exemplo): phpunit ModelAllTests.php
  • Para executar um teste especifico: phpunit nomeDoTeste.php

Lembre-se que você precisa colocar o path na pasta onde o seu teste se encontra (Para testar todos os models, por exemplo, teríamos que colocar o path em: SeuProjeto/system/application/tests/models/).

Não se esqueça de adicionar o path do seu phpunit aos paths do Windows, para isso você pode executar na linha de comando:

SET PATH=%PATH%;C:\php\pear (Onde C:\php\pear deve ser o diretório onde encontra-se o seu phpunit.bat).

No Comments | Tags: CodeIgniter, Metodologias Ágeis, PHP

Add a Comment