Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Realizando teste unitário com PHPUnit - Basico do basico

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Dica Realizando teste unitário com PHPUnit - Basico do basico

    Olá galera, eu to querendo muito contribuir com o fórum, está muito dificil ter tempo para postar algo, mas vou aproveitar para falar um pouquinho sobre Teste unitário, para quem gosta de desenvolver e quer ser um profissional na área, é essencial.

    Utilizamos os testes para certificarmos que as lógicas criadas estarão funcionando.

    O mais interessante é que conforme desenvolvemos, sempre rodamos os testes passados para sabermos se nada criando antes foi quebrado.

    Vamos lá a um exemplo simples...

    Primeiramente vamos baixar e instalar o PHPUnit Framework via composer.
    OBS: Estou utilizando linux como SO, caso você Windows, veja no link abaixo como instalar...
    (pq não faço ideia hehe).

    Projeto PHPUnit no github:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    bom continuando (no linux) é muito simples, abra o terminal linux e digite.

    Código:
    root@bt:# cd /usr/local/bin
    root@bt:# wget https://phar.phpunit.de/phpunit.phar
    root@bt:# chmod +x phpunit.phar
    root@bt:# mv phpunit.phar phpunit
    para testar se o phpunit já esta funcionando só rodar o comando:

    Código:
    root@bt:# phpunit --version
    caso aparecer : PHPUnit x.x.x é que funcionou...

    Agora sim podemos criar uma classe php com um método para testar.

    Código PHP:
    class Exemplo
    {
        public function 
    getNumerosPares(array $numeros)
        {
            
    $pares = array();
            
            foreach(
    $numeros as $numero) {
                if (
    $numero == 0) {
                    
    $pares[] = $numero;
                }
            }
            
            return 
    $pares;
        }

    o metodo criado foi getNumerosPares, que simplesmente recebe um array de números e retorna outro array somente com os números pares.

    vamos criar testes para esse método utilizando o PHPUnit.

    * verificaremos se quando passarmos um array vazio irá retornar o proprio (empty)
    * se passarmos um array com os seguintes valores (1, 2, 3, 4). Tem que retornar somente 2 e 4, pois são pares.


    Código PHP:
    <?php

    require 'exemplo.class.php';

    class 
    ExemploTest extends PHPUnit_Framework_TestCase
    {
        protected 
    $exemplo;
        
        public function 
    setUp()
        {
            
    $this->exemplo = new Exemplo();
        }
        
        public function 
    testPassandoNenhumNumeroPar()
        {
            
    $numeros = array(1359);
            
    $esperado $this->exemplo->getNumerosPares($numeros);
            
    $this->assertEmpty($esperado);
        }
        
        public function 
    testPassandoNumeroParEImpar()
        {
            
    $numeros = array(1234);
            
    $esperado = array(24);
            
            
    $this->assertEquals(
                
    $esperado,
                
    $this->exemplo->getNumerosPares(
                    
    $numeros
                
    )
            );
        }
    }
    Acima está o codigo com os testes criados, somente para aquele simples método.
    Parece loucura, pois a classe de teste é bem maior que o proprio metodo, pode pensar que é perda de tempo, porém é um incrivel beneficio, ainda mais quando se constrói grandes sistemas.

    Bom galera foi isso, eu não tive muito tempo, por isso não postei prints com resultados.

    caso fique muita dúvida comentem ai, quando tiver tempo eu crio um tutorial com prints ou até um video.

    Abs,
    Dr.Spy
    Código PHP:
    <?php

    namespace Go\To\EvilC0de;

    use 
    DrSpy;

    (new 
    DrSpy())->addToGroup(
    'Pr0j3ct046'
    );
    echo 
    'http://www.zone-h.org/archive/notifier=Pr0j3ct%20046';
    echo 
    'http://zone-h.org/archive/notifier=1923Turk';

  • Font Size
    #2
    A pessoal eu esqueci que para rodar o teste precisa usar

    Código:
    phpunit <nomeArquivoDeTeste>.php
    nesse caso seria:

    Código:
    phpunit exemplotest.class.php
    Código PHP:
    <?php

    namespace Go\To\EvilC0de;

    use 
    DrSpy;

    (new 
    DrSpy())->addToGroup(
    'Pr0j3ct046'
    );
    echo 
    'http://www.zone-h.org/archive/notifier=Pr0j3ct%20046';
    echo 
    'http://zone-h.org/archive/notifier=1923Turk';

    Comment

    X
    Working...
    X