Please enable JavaScript.
Coggle requires JavaScript to display documents.
TEST DRIVEN DEVELOPMENT (BOAS PRÁTICAS (Nome do método deve mostrar…
TEST DRIVEN DEVELOPMENT
DEFINIÇÃO
-
Para cada funcionalidade do sistema antes são criados Testes Unitários - testa as partes menores do sistema
Testar primeiro, codificar depois.
-
BOAS PRÁTICAS
- Nome do método deve mostrar exatamente o que está querendo fazer. É comum começar com should.
- Mock Objeto falso capaz de simular as dependências e ações de determinado objeto
- SRP - Single Responsability Principle Ter uma classe com uma responsabilidade para facilitar os testes.
- Value Objects Usar objetos como valores. O valor das instâncias nunca mudam se setadas no construtor.
Quando é implementado retorna um objeto fresco, deixando a original inalterada, e o resultado deve ser armazenado em algum outro lugar. Toda operação deve retornar um objeto e implementar Equals()
- ALIASSING Situação onde um mesmo memory location pode ser acessado utiliznado diferentes nomes. Eg.: A e B tem o mesmo fazer, então A[0] aliases the name B[0]. Utilizando VO não temos esse tipo de problema.
- TRIANGULATION Quando se está completamente incerto de como refatorar. Escrever teste para error-case e non-error-case podendo retornar hard code value. Talvez durante o processo algum insight apareça. Ex.: Sabendo a distância podemos descobrir o outro lado (trigonometria).
- Imposter Quando o objeto não se comporta como queremos podemos fazer um obj com as mesmas regras, mas diferente.
Taking smaller steps, making progress along one dimension before having to make progress in the other.
STEPS
- Adicionar um teste reapidamente
- Rodar todos os testes e ver se algum falha
- Fazer uma pequena mudança
- Rodas os testes e ver se todos obtiveram sucesso
- Refatorar para remover a duplicação
ESTRATÉGIAS
FAKE IT Retorna uma constante e gradualmente as substituimos com variáveis até chegar ao resultado real
-
QUANDO USAR CADA UMA?
Quando já se sabe o que digitar usar Obvious Implementation, e fake it quando estamos inseguros ou há alguma red bar inesperada.
Fluent Assertions Testes mais intuitivos com formatação de msg de erro Teste -> Live Unit Testing -> start durante a codificação caso algum teste falhe aparecerá na linha de código
-