Eu li em todos os lugares sobre como eles são ótimos, mas por algum motivo não consigo descobrir como exatamente devo testar algo. Alguém poderia postar um pedaço de código de exemplo e como eles o testariam? Se não for muito problema :)
php
unit-testing
testing
tdd
solte
fonte
fonte
Respostas:
Existe um terceiro "framework", que é muito mais fácil de aprender - ainda mais fácil do que o Simple Test, é chamado phpt.
Uma cartilha pode ser encontrada aqui: http://qa.php.net/write-test.php
Edit: Acabei de ver sua solicitação de código de amostra.
Vamos supor que você tenha a seguinte função em um arquivo chamado lib.php :
Realmente simples e direto, o parâmetro que você passa é retornado. Então, vamos dar uma olhada em um teste para esta função, vamos chamar o arquivo de teste foo.phpt :
Em suma, fornecemos o parâmetro
$bar
com valor"Hello World"
evar_dump()
a resposta da chamada de função parafoo()
.Para executar este teste, use:
pear run-test path/to/foo.phpt
Isso requer uma instalação funcional do PEAR em seu sistema, o que é bastante comum na maioria das circunstâncias. Se você precisar instalá-lo, recomendo instalar a versão mais recente disponível. Caso precise de ajuda para configurá-lo, fique à vontade para perguntar (mas forneça o sistema operacional, etc.).
fonte
run-tests
?Existem duas estruturas que você pode usar para testes de unidade. Simpletest e PHPUnit , que eu prefiro. Leia os tutoriais sobre como escrever e executar testes na página inicial do PHPUnit. É bastante fácil e bem descrito.
fonte
Você pode tornar o teste de unidade mais eficaz alterando seu estilo de codificação para acomodá-lo.
Eu recomendo navegar no Google Testing Blog , em particular o post sobre Writing Testable Code .
fonte
Enrolei o meu porque não tive tempo de aprender a maneira de alguém fazer as coisas, demorou cerca de 20 minutos para escrever, 10 para adaptá-lo para postagem aqui.
Unitesting é muito útil para mim.
isso é meio longo, mas se explica e há um exemplo na parte inferior.
Isso resulta em:
fonte
Obtenha o PHPUnit. É muito fácil de usar.
Em seguida, comece com afirmações muito simples. Você pode fazer muito com AssertEquals antes de entrar em qualquer outra coisa. É uma boa maneira de molhar os pés.
Você também pode tentar escrever seu teste primeiro (já que você deu à sua pergunta a tag TDD) e depois escrever seu código. Se você não fez isso antes, é um abrir de olhos.
fonte
Para testes e documentação simples, php-doctest é muito bom e é uma maneira muito fácil de começar, já que você não precisa abrir um arquivo separado. Imagine a função abaixo:
Se você agora executar este arquivo através do phpdt (executor de linha de comando do php-doctest) 1 teste será executado. O doctest está contido dentro do bloco <code>. Doctest se originou em python e é bom para fornecer exemplos úteis e executáveis sobre como o código deve funcionar. Você não pode usá-lo exclusivamente porque o próprio código iria se encher de casos de teste, mas descobri que é útil junto com uma biblioteca tdd mais formal - eu uso o phpunit.
Esta primeira resposta aqui resume bem (não é unit vs doctest).
fonte
phpunit é basicamente o framework de teste de unidade de fato para php. há também DocTest (disponível como um pacote PEAR) e alguns outros. O próprio php é testado para regressões e similares por meio de testes de phpt que também podem ser executados via Pear.
fonte
Os testes de codecepção são muito parecidos com os testes de unidade comuns, mas são muito poderosos em coisas onde você precisa de simulação e stub.
Aqui está o teste do controlador de amostra. Observe como os stubs são facilmente criados. A facilidade com que você verifica se o método foi invocado.
Também existem outras coisas legais. Você pode testar o estado do banco de dados, sistema de arquivos, etc.
fonte
Além das excelentes sugestões sobre frameworks de teste já fornecidas, você está construindo seu aplicativo com um dos frameworks PHP da web que possui teste automatizado embutido, como Symfony ou CakePHP ? Às vezes, ter um lugar para simplesmente colocar seus métodos de teste reduz o atrito inicial que algumas pessoas associam aos testes automatizados e TDD.
fonte
Muito para postar novamente aqui, mas aqui está um ótimo artigo sobre como usar phpt . Ele cobre uma série de aspectos em torno do phpt que geralmente são esquecidos, então pode valer a pena uma leitura para expandir seu conhecimento sobre php além de apenas escrever um teste. Felizmente, o artigo também discute como escrever testes!
Os principais pontos de discussão
fonte
Sei que já há muitas informações aqui, mas como elas ainda aparecem nas pesquisas do Google, é melhor adicionar o Chinook Test Suite à lista. É uma estrutura de teste simples e pequena.
Você pode facilmente testar suas classes com ele e também criar objetos fictícios. Você executa os testes por meio de um navegador da web e (ainda não) por meio de um console. No navegador, você pode especificar qual classe de teste ou mesmo que método de teste executar. Ou você pode simplesmente executar todos os testes.
Uma captura de tela da página do github:
O que eu gosto é a maneira como você afirma os testes. Isso é feito com as chamadas "afirmações fluentes". Exemplo:
E criar objetos fictícios também é uma brisa (com uma sintaxe fluente):
De qualquer forma, mais informações podem ser encontradas na página do github com um exemplo de código também:
https://github.com/w00/Chinook-TestSuite
fonte