Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Testes Unitários PHPUnit

Eu notei que os valores usados dentro dos test cases são completamente aleatórios.

Deve-se sempre pensar em valores aleatórios ?

1 resposta
solução!

Oi Marcelo, tudo bom?

Isso vai depender do que exatamente você está testando. Os valores dos testes devem ser coerentes com o a funcionalidade que está sendo testada. Por exemplo, se temos um método chamado geraNumerosPositivos(). Precisamos garantir que ele não vai gerar um numero negativo. Pouco importa qual numero, nesse caso, desde que seja negativo. Da mesma forma precisariamos testar se ele gera realmente numeros positivos. E, novamente, pouco importa qual numero desde que seja positivo.

Nosso Leiloeiro, por exemplo:

class TesteDoAvaliador extends PHPUnit_Framework_TestCase {

        public function testAceitaLeilaoEmOrdemCrescente() {

            $joao = new Usuario("Joao");
            $renan = new Usuario("Renan");
            $felipe = new Usuario("Felipe");

            $leilao = new Leilao("Playstation 3");

            $leilao->propoe(new Lance($joao,250));
            $leilao->propoe(new Lance($renan,300));
            $leilao->propoe(new Lance($felipe,400));

            $leiloeiro = new Avaliador();
            $leiloeiro->avalia($leilao);

            $maiorEsperado = 400;
            $menorEsperado = 250;

            var_dump($leiloeiro->getMaiorLance() == $maiorEsperado);
            var_dump($leiloeiro->getMenorLance() == $menorEsperado);

        }
    }

Aqui queremos testar se aceita um leilão em ordem crescente. Pouco importa qual o valor do lance, desde que criemos todos em ordem crescete para que teste faça sentido =)

Então, de certa forma, os valores são aleatorios mas sempre com foco na funcionalidade que queremos garantir.

Espero ter ajudado =)

Abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software