SimpleTest vs PHPunit

Eu queria saber se alguém que tenha experiência em ambas essas coisas pode esclarecer a diferença significativa entre os dois, se houver?

Qualquer força específica de cada um que o torne adequado para qualquer caso específico?

Esta questão é bastante datada, mas, como ainda está recebendo tráfego e responde. Embora eu indique meu ponto aqui novamente, mesmo assim, eu já fiz isso em algumas outras questões (mais recentes).

Estou muito confuso que o SimpleTest ainda é considerado uma alternativa à phpunit. Talvez eu seja apenas mal informado, mas até onde eu vi:

  • PHPUnit é o padrão; A maioria dos frameworks o usa (como o Zend Framework (1 e 2), o Cake, o Agavi, até o Symfony está deixando o próprio Framework no Symfony 2 para phpunit).
  • O PHPUnit é integrado em cada IDE do PHP (Eclipse, Netbeans, Zend Stuide, PHPStorm) e funciona bem.
  • O Simpletest possui uma extensão de eclipse para o PHP 5.1 (aka antigo) e nada mais.
  • PHPUnit funciona bem com todos os servidores de continuous integration, pois produz todos os arquivos de log padrão para cobertura de código e relatórios de teste.
  • O mais simples não. Embora este não seja um grande problema para começar, ele irá mordê-lo muito antes de parar de “apenas testar” e começar a desenvolver software (Sim, essa afirmação é provocativa 🙂 Não leve isso a sério demais).
  • O PHPUnit é ativamente mantido, estável e funciona de forma excelente para cada base de código, todos os cenários e todas as formas em que você deseja escrever seus testes.
  • (Subjetivo) O PHPUnit fornece relatórios de cobertura de código muito mais agradáveis do que o Simpletest
  • Com o PHPUnit, você também obtém esses relatórios dentro do seu IDE ( Netbeans , Eclipse, …)
  • Também há algumas sugestões para uma web interface to phpunit tests .

Ainda tenho de ver qualquer argumento a favor do SimpleTest. Ainda não é mais fácil de instalar, uma vez que o PHPUnit está disponível através da pera:

 pear channel-discover pear.phpunit.de pear install phpunit/PHPUnit 

e o “primeiro teste” parece praticamente o mesmo.

Até ao PHPUnit 3.7 , é ainda mais fácil instalá- lo usando apenas o PHAR Archive

 wget http://pear.phpunit.de/get/phpunit.phar chmod +x phpunit-3.7.6.phar 

ou para o Windows, apenas baixando o phar e executando:

 php phpunit-.phar 

ou ao usar as formas de instalação do compositor suportadas, como

 "require-dev": { "phpunit/phpunit": "3.7.*" } 

para o seu compositor.json.


Para tudo o que você quer testar, o PHPUnit terá uma solução e você poderá encontrar ajuda em qualquer lugar (SO, #phpunit irc channel no freenode, praticamente todos os desenvolvedores php;))

Por favor, corrija-me se eu disse algo errado ou esqueci algo 🙂

Visão geral das ferramentas de teste do PHP

Vídeo: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Slides: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

Ele menciona coisas como Atoum que se chama: “Uma estrutura de teste de unidade simples, moderna e intuitiva para PHP!”


Divulgação completa

Eu originalmente escrevi esta resposta em janeiro de 2011, onde eu não tinha afiliação com nenhum projeto de Teste PHP. Desde então, tornei-me um colaborador da PHPUnit.

Prefiro o PHPUnit agora, mas quando comecei usei o SimpleTest, pois nem sempre tenho access à linha de comando. SimpleTest é bom, mas a única coisa que tem sobre o PHPUnit, na minha opinião, é o web runner.

As razões pelas quais eu gosto do PHPUnit são que ele se integra com outras ferramentas de desenvolvimento do PHP, como phing (como o SimpleTest), phpUnderControl e Xinc . A partir da versão 3.0, ele tem um apoio discreto , está sendo ativamente desenvolvido e a documentação é excelente.

Realmente, a única maneira de responder esta pergunta para si mesmo é tentar os dois por um tempo e ver o que melhor se adequa ao seu estilo.

EDIT: Phing agora se integra com o SimpleTest também.

  • Não consegui entender como baixar e instalar o PHPUnit.
  • No entanto, eu poderia facilmente entender como instalar o SimpleTest.

    (Tanto quanto eu consigo lembrar, as instruções para PHPUnit disseram algo ao longo das linhas de “instalá-lo via PEAR e não daremos instruções sobre como fazê-lo de qualquer outra forma”) veja:

  • http://www.phpunit.de/manual/current/en/installation.html

Para o SimpleTest , basta baixá-lo e apontar para o seu código.

Então o Simpletest ganhou para mim.

Baphled tem um bom artigo no SimpleTest vs PHPUnit3 .

A metade dos pontos mencionados na resposta aceita simplesmente não é verdadeira:

SimpleTest tem

  • a configuração mais fácil (extrair para a pasta, include e executar)
  • basta verificar a pasta no version control (tente fazer isso com phpunit hoje em dia :))
  • menos dependencies e muitas extensões (webtester, formateador, autenticação)
  • um bom repórter de cobertura de código, que é fácil de estender (pontos, nomes de funções, colors)
  • um resumo da cobertura do código (finalmente desembarcou no PHPUnit 4.x)
  • um corretor web decente e um corretor da web ajax, com grupos e execuções de arquivos simples
  • ainda melhor ferramenta de diferença (sem problemas de espaço em branco ou de linha nova)
  • um adaptador / invólucro para executar SimpleTests por phpUnit e vice-versa
  • é ativamente mantido no GitHub: https://github.com/simpletest
  • compatibilidade PHP5.4 +

A desvantagem:

  • não padrão da indústria (PHPUnit)

Achei que o SimpleTest foi ainda mais fácil do que PHPUnit para configurar. Basta extraí-lo e você é bom para ir. Um benefício disso é se você estiver trabalhando em mais de uma máquina, pois você pode armazenar toda a estrutura de testes da mesma maneira que seu código-fonte e, assim, saber que está usando o mesmo código de estrutura. Especialmente se você modificá-lo de qualquer maneira.

Então, eu diria que uma força de SimpleTest é que é muito leve e portátil.

SimpleTest também é fornecido com uma GUI HTML muito simples, que é bastante fácil de expandir se você quiser. Tanto quanto eu sei, PHPUnit não inclui uma GUI HTML, mas há GUI: está disponível para download, como Cool .

Bem, eu fiz um corretor de caso de teste de UI baseado em phpUnit e disponibilizei no sourceforge. Usa ajax e tem uma interface bastante legal também se você quiser dar uma chance de verificá-la no sourceforge. O nome do projeto é phpunitwebui e o site é http://phpunitwebui.sourceforge.net/

Como foi apontado, é principalmente uma escolha de preferência, pois ambos irão executar os testes que você escreve e relatará os resultados.

A interface de usuário da web mais simples é muito útil, mas também às vezes pode ficar complicada. No meu projeto atual, teria tido que colocar mais trabalho em um sistema para tornar meu aplicativo (uma API) funcionar com a interface da web (configurar apache corretamente, copiar arquivos para a raiz public_html, etc.) do que teria sido para simplesmente executar phpunit a partir do espaço de trabalho do eclipse. Portanto, eu escolho PHPUnit. Além disso, o uso de PEAR foi uma grande vantagem, uma vez que não é necessário acompanhar manualmente as atualizações. Basta executar a pear upgrade vez em quando e o PHPUnit será mantido atualizado.

Não verifiquei o Teste Simples por um tempo, a última vez que ele tinha um plugin para o eclipse, que é um fator importante para mim, mas não foi atualizado há muito tempo. Sebastian Bergmann ainda está trabalhando muito ativamente no PHPUnit, mas ainda não possui um bom plugin para o eclipse – mas está incluído no novo Zend Studio.

Esta questão é antiga, mas eu quero adicionar minha experiência: o PHPUnit parece ser o padrão agora, mas se você trabalha com um sistema herdado que usa muitas variables ​​globais, você pode ficar preso a partir do início. Parece que não há uma boa maneira de fazer testes com vars globais em PHPUnit, você parece ter que definir suas variables ​​através de $ GLOBALS, que NÃO É BOM se você tiver toneladas de arquivos definindo variables ​​globais em todos os lugares. Ok, alguns podem dizer que o problema está no sistema legado, mas isso não significa que não podemos fazer testes nesse sistema. Com SimpleTest, tal coisa é simples. Suponho que se o PHPUnit nos permite include um arquivo globalmente, não dentro de um escopo de class / function, então também não seria um problema demais.

Outra solução promissora é http://www.enhance-php.com , parece legal 🙂

Isso é do ponto de vista de um desenvolvedor PHP muito casual:

Levou dois dias para entender o PHPUnit, principalmente tentando depurar no Eclipse que eu finalmente desisti.

Levei duas horas para configurar o Simpletest incluindo debug no Eclipse.

Talvez eu encontre as falhas do Simpletest no futuro, mas até agora faz bem o que eu preciso: TestClasses, objects Mock, debugging de código de teste e interface da web para um instantâneo rápido da situação.

Novamente: isso do ponto de vista de um usuário muito casual do PHP (nem mesmo desenvolvedor 🙂

quando há milhares de funções para testar de uma só vez, phpunit é um caminho a seguir, o teste simples está ficando aquém da web.

Eu ainda estou usando uma simples web para teste de pequena escala.

Mas ambos são bons