Julho 11th 2007 06:58 am

Testando seus códigos com PHPUnit

Muito similar ao JUnit, o PHPUnit é um framework que auxilia a criação e execução de testes unitários sobre classes PHP. O desenvolvimento orientado a testes é uma ótima prática largamente utilizada por equipes Extreme Programming. Não vou abordar aqui, o valor de utilizar ou não está prática, mas sim, como de fato utiliza-la, quem se interesar mais pelo assunto ai vão alguns links:


http://www.improveit.com.br/xp/praticas/tdd
http://pt.wikipedia.org/wiki/Extreme_programming

Para escrever este artigo utilizei:

Instalação

Descompactar o arquivo PHPUnit-3.1.3.tgz no diretório c:\opt\phpunit

- C:\\opt\\phpunit
|
+- PHPUnit
|- pear-phpunit
|- pear-phpunit.bat

Renomear o arquivo pear-phpunit.bat para phpunit.bat

Editar o arquivo C:\opt\phpunit\phpunit.bat alterando a string @php_bin@ para a localização do executavel do php, no meu caso C:\php5\php e alterar a string @php_dir@ para C:\opt\phpunit

Adicionar no path do windows o diretório C:\opt\phpunit

SET PATH=%PATH%;C:\\opt\\phpunit

Adicionar o diretório do phpunit do include path do arquivo php.ini

include_path = “.;c:\\opt\\phpunit”

No prompt do windows executar o comando

phpunit –version

caso apareça:
"PHPUnit 3.1.3 by Sebastian Bergmann." sua instalação está correta, caso não apareça revisar novamente os passos da instalação.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (3 votos, média: 5 de 5)
Loading ... Loading ...

Páginas: 1 2 3 4

31 Comments »

31 Responses to “Testando seus códigos com PHPUnit”

  1. Tremper’s Blog » Criando Listener para o PhpUnit on 26 Jul 2007 at 04:41 #

    […] Se você ainda não tem nenhum contato com PHPUnit recomendo a leitura deste post http://blog.diegotremper.com/archives/15. […]

  2. bruno on 31 Jul 2007 at 12:26 #

    parabéns pelo artigo. muito bom.

  3. bruno on 01 Ago 2007 at 19:11 #

    Olá,

    realizei a instalação do phpunit realizei o teste “phpunit –version” e aparentemente funciona perfeitamente, mas qnd estou entrando gerar a classe de teste baseado no arquivo pronto “phpunit –skeleton Calculadora”, a classe de teste não é gerada e apresenta uma mensagem “COULD NOT WRITE TEST CLASS SKELETON FOR ‘Calculadora’ to ‘Calculadora.php’” já verifiquei a permissão e está tudo liberado.

    Alguém já passou por isso?

    []’s
    Bruno Jackson

  4. diegotremper on 02 Ago 2007 at 00:48 #

    Ola Bruno,

    normalmente acima da mensagem de erro que você mencionou (“COULD NOT WRITE TEST CLASS SKELETON FOR ‘Calculadora’ to ‘Calculadora.php’”), aparece uma outra mensagem de erro lançada pela classe PHPUnit/Util/Skeleton.php

    Algo do tipo:


    $ phpunit --skeleton Calculadora
    PHPUnit 3.1.3 by Sebastian Bergmann.

    'Calculadora.php' could not be opened. < -- esta mensagem
    Could not write test class skeleton for 'Calculadora' to 'Calculadora.php'.

    pode mencionar que mensagem aparece? se apacere.

    A mensagem de erro que coloquei acima, aconteceu devido eu ter executado o comando em um diretório onde não existia nenhuma classe Calculadora.php

  5. bruno on 02 Ago 2007 at 16:28 #

    Olá Diego,

    obrigado pelo retorno.

    então, quando executei o comando direto pelo C:/ ele apresentou a mensagem que vc mencionou ‘Calculadora.php’ could not be opened. Mas quando entrei no diretorio do arquivo ele não apresentou mais esse mensage mostrando apenas:

    Could not write test class skeleton for “Calculadora” to “Calculadora.php”

    o conteudo do arquivo Calculadora.php é esse:

    Obrigado pela Ajuda

  6. diegotremper on 03 Ago 2007 at 00:05 #

    infelizmente não saiu a mensagem em seu post anterior, mas se você continua com o problema, procure depurar a classe PHPUnit_Util_Skeleton ela está no arquivo PHPUnit/Util/Skeleton.php.

    Qualquer outra duvida é só comentar ai.

  7. bruno on 03 Ago 2007 at 10:27 #

    Olá Diego, o erro evoluiu um pouco. hehe

    so consigo gerar a class CalculadoraTest retirando os comentarios
    @assert, mas pelo q entendir essa informação é importante para geração do teste.

    esse é um dos metodos de teste que ele criou:
    /**
    * @todo Implement testSubtrair().
    */
    public function testSubtrair() {
    // Remove the following lines when you implement this test.
    $this->markTestIncomplete( ‘This test has not been implemented yet.’ );
    }

    ai ao executar o teste: > phpunit CalculadoraTest
    ocorre o seguinte erro:
    PHPUnit 3.1.5 by Sebastian Bergmann.

    IIII

    Time: 0 seconds

    OK, but incomplete or skipped tests!
    Tests: 4, Incomplete: 4.

    valeu pela ajuda.

  8. Marcelo on 22 Out 2007 at 21:11 #

    Estou com problema para instalar o phpunit. Quando vc diz para incluir no path do windows o caminho SET PATH=%PATH%;C:\\opt\\phpunit. Percebi que existe uma variavel path nas variaveis do sistema do Windows mas la jah possui um caminho. É para trocar com esse e se for para adicionar como eu separo os dois caminhos?

  9. Diego Tremper on 23 Out 2007 at 12:53 #

    o comando SET PATH=%PATH%;C:\\opt\\phpunit seguinifica que você está colocando tudo que já existe na variável PATH e concatenando com o separador “;” o caminho C:\\opt\\phpunit.

    Se você quiser adicionar outros caminhos no PATH, basta concatenar os valores separados por “;”.

    Ex.: SET CAMINHO1;CAMINHO2;CAMINHO3…

    []’s

  10. Raphael deAmeida on 28 Out 2007 at 01:38 #

    Existe plugin para eclipse, tipo o do SimpleTest???

  11. Diego Tremper on 28 Out 2007 at 22:54 #

    Não sei se entendi bem sua pergunta, mas pelo que entendi você quer saber se existe algum plugin do PHPUnit para o eclipse.

    Que eu saiba não, mas recentemente foi lançada uma nova IDE da Zend baseada no Eclipse, e traz suporte ao PHPUnit, de maneira muito similar ao JUnit.

    Escrevi dois post mensionando esta nova IDE, recomendo a leitura.

    http://blog.diegotremper.com/archives/44
    http://blog.diegotremper.com/archives/45

    []’s

  12. Raphael deAmeida on 29 Out 2007 at 20:26 #

    É Diego,
    Isso mesmo que eu quero.
    É uma pena não ter o plugin pra eclipse do PHPUnit :(
    Já testei o zend neon mas não pretendo compra-lo só por causa disso, vou ficar com o simpleTest mesmo. :)

  13. Alexandre Muniz on 17 Dez 2007 at 16:16 #

    Olá Diego,boa tarde,tudo bem?
    Meus parabens pelo tutorial,,ficou bem bacana.
    To com um problema que é o seguinte,fiz o procedimento conforme descrito no tutorial, porem ao executar qualquer comando,me aparece a seguinte mensagem:

    - Executando o comando phpunit –version
    Failed to start up concurrent users module!

    Ao executar os outros testes, como o da calculadora, por exemplo, tambem não obtive sucesso,ele criou o arquivo, porém não escreveu nenhum conteudo nele,,,

    Se puder me dar uma orientação sobre o que pode estar causando esse erro.

    Obrigado

  14. Diego Tremper on 17 Dez 2007 at 17:09 #

    manda um $ php –version ai.

  15. Alexandre Muniz on 17 Dez 2007 at 17:29 #

    Minha versão é 5.2.3 estou usando um software chamado Vertrigo, mas o php está rodando normalmente.

    Obrigado

  16. Blog do Tremper » Integrando PHPUnit com banco de dados on 17 Dez 2007 at 20:48 #

    […] ainda não estão familiarizados com a utilização do PHPUnit recomendo a leitura destes posts: http://blog.diegotremper.com/archives/15 […]

  17. Diego Tremper on 18 Dez 2007 at 20:20 #

    Alexandre,

    dei uma pesquisada e encontrei algumas reclamando do mesmo problema que o seu, mas o problema é do php, a maioria dos erros que encontrei, estavam relacionados com ferramentes de optimização, tipo eAcelerator, Zend Optimazer, etc.

    mas realmente, não sei como te ajudar, no teu lugar eu tentaria reinstalar o php na mão.

    Abraço

  18. Padilha on 22 Fev 2008 at 17:52 #

    Teria como eu criar um ArrayObject e enviar um Objeto qualquer dentro dele atravez do Append??

  19. Diego Tremper on 23 Fev 2008 at 23:30 #

    Olá Padilha,

    cara me esforcei, mas não compreedi, tem como dar um exemplo?

  20. Marcelo on 27 Abr 2008 at 17:02 #

    Oi Diego, eu instalei tudo direito como voce falo mas quando eu coloco phpunit -version ele da o seguinte erro.

    “c:/wamp/php não é reconhecido como um comando interno ou externo, um programa operavel ou um arquivo em lotes.”

    Eu utilizo o WAMP 5. Tem algum problema?? Quando eu edito o .bat do phpunit tem duas vezes @php_bin@ 2 vezes, é pra alterar nas duas????

    Vc podia passar um tutorial para o meu caso ki tenho o WAMP instalado.

    Aguardo retorno

  21. Diego Tremper on 28 Abr 2008 at 02:47 #

    Sim, você deve alterar o todas as strings @php_bin@ pelo caminho para do executável do php (php.exe).

    Tente fazer isso, continuar tendo problemas posta ai!

    []’s

  22. Marcelo on 28 Abr 2008 at 10:42 #

    Ola Diego

    Agora estou tentando instalar na maquina do meu trampo e aqui eu uso o xamp. Dessa vez os erros mudaram. No @php_bin@, eu coloquei o caminho todo “D:\xampp\php\php.exe”. Esta certo assim?

    Porque depois que eu coloquei o comando phpunit -version ele apareceu isso.

    PHPWarning: PHP Startup: Unable to load dynamic library ‘D:\xampp\php\ext\php_paradox.dll - Não foi possível encontrar o módulo especificado - (Eu procurei esse arquivo e o achei no lugar certo)

    Warning: require_once(PHPUnit/TextUI/TestRunner.php): failed to open stream: No such file or directory in D:\xampp\htdocs\www\calendario\PHPUnit\TextUI\Command.php on line 47. (Descompactei na pasta em que vou usar o phpunit)

    Fatal error: require_once(): Failed opening required ‘PHPUnit/TextUI/TestRunner.php’ (include_path=’ô.’) in D:\xampp\htdocs\www\calendario\PHPUnit\TextUI\Command.php on line 47

  23. Diego Tremper on 28 Abr 2008 at 11:48 #

    “Dessa vez os erros mudaram. No @php_bin@, eu coloquei o caminho todo “D:\xampp\php\php.exe”. Esta certo assim?”

    - Sim, está certo.

    “PHPWarning: PHP Startup: Unable to load dynamic library ‘D:\xampp\php\ext\php_paradox.dll - Não foi possível encontrar o módulo especificado - (Eu procurei esse arquivo e o achei no lugar certo)”

    - Pois é, isto não é problema nenhum para o phpunit, o problema é com o php mesmo.

    “Warning: require_once(PHPUnit/TextUI/TestRunner.php): failed to open stream: No such file or directory in D:\xampp\htdocs\www\calendario\PHPUnit\TextUI\Command.php on line 47. (Descompactei na pasta em que vou usar o phpunit)

    Fatal error: require_once(): Failed opening required ‘PHPUnit/TextUI/TestRunner.php’ (include_path=’ô.’) in D:\xampp\htdocs\www\calendario\PHPUnit\TextUI\Command.php on line 47″

    - ???include_path=’ô.’??? Lembrou de configurar o include_path do php? lembre de colocar o diretório do phpunit no include_path do seu php.ini

  24. Marcelo on 28 Abr 2008 at 14:47 #

    Ola Diego

    Entao na maquina de casa consigui. So precisava coloca “php.exe”, no caminho do bin. De alguma forma quando eu instalei o xamp na maquina do trampo ele da erro quando eu clico no icone do php ele acusa que não consiguiu achar ou incializar a iconv.dll algo assim e da erro, aqui em casa nao deu esse erro e funciono phpunit , mas o mais engracado é que o php funciona no trampo de boa, vo ve sih eu instalo de novo.

    Obrigado pela paciencia!!!!

  25. Marcelo on 04 Mai 2008 at 15:03 #

    Ola Diego, desculpe novamente por estar aqui mas estou com dificuldades em gerar as classes de testes

    eu tenho um arquivo que possue funcoes de get e set por exemplo

    public function getnome()
    {
    return $this->nome;
    }

    public function setnome($val)
    {
    $this->nome = $val;
    }

    /**
    *
    * @assert (Marcelo) == Marcelo
    */

    Coloquei assim mas deu erro. Como devo proceder nesses testes??

    Vlw Diego

  26. Gilcymar on 20 Ago 2008 at 17:23 #

    ola..

    diego.. parabens, ótimo post..

    preciso de ajuda
    vou ao pront e aparacere o seguinte erro phpunit –version não é reconhecido como comando interno ou externo..

    obrigado

  27. Diego Tremper on 20 Ago 2008 at 22:34 #

    Olá Gilcymar,

    isto acontece porque o arquivo phpunit.bat não está no path do windows, você precisa adicionado.
    caso não queira fazer isso, basta executar o comando passando todo o path para o arquivo. ex.:

    C:\path\para\pasta\phpunit\phpunit.bat –version

    []’s

  28. Gilcymar on 21 Ago 2008 at 15:26 #

    olá ..

    mesmo assim continua dando erro..

    vc poderia me add no msn pra conversarmos?

    gilcymar@msn.com

    muito obrigado

  29. Gilcymar on 22 Ago 2008 at 01:07 #

    olá diego..

    resolvi usar outro framework,

    e vou começar a utilizar o zend studio for eclipse, pois ele ja vem com phpunit..

    vou seguir seus post…

    mas me add, p trocarmos experiências

    obrigado..

    t+

  30. Integrando PHPUnit ao CodeIgniter | Eric Saboia on 11 Mar 2009 at 12:26 #

    […] 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. […]

  31. javalisson on 28 Mai 2009 at 11:30 #

    Cara, valeu! Salvou meu dia!

    Abraços,

    javAlisson.

Trackback URI | Comments RSS

Leave a Reply

« Utilizando interfaces em PHP | Phing »