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

O que diferencia TDD de apenas testes?

Fiquei com dúvida em relação a diferença de TDD e testes, com base no trecho contido na aula. "Por exemplo, às vezes queremos só escrever um conjunto de testes que faltaram para determinada funcionalidade. Nesse momento, não faríamos TDD, mas sim escreveríamos testes."

Uma das coisas que caracteriza TDD, não seria testar antes de escrever qualquer linha de código? Como aplicaríamos TDD nesse caso? Estou bem confuso de como diferenciar um teste de TDD.

1 resposta
solução!

Olá, Felipe.

Sobre a primeira pergunta, não é exatamente antes de QUALQUER linha de código, mas sim antes de determinada funcionalidade.

Tomemos, como exemplo, o caso em que eu quero garantir que uma pessoa não pode dar mais de um lance consecutivamente. Primeiro eu penso no teste, onde tem os lances A, B e C, sendo A e B da pessoa X, e o C da pessoa Y; a partir do segundo lance eu verifico se o lance anterior não é da mesma pessoa que está dando o lance atual; dou o primeiro lance pra X, o segundo lance pra X também e o terceiro lance pra Y; dou um assert em que a lista deve ter tamanho 2, outro assert pra verificar que o primeiro lance é de X e o segundo é de Y.

Ok, pensei nisso aí tudo e fiz esses asserts e tal, mas ainda não há essa regra implementada lá dentro do método void propoe, que por enquanto só tem "lances.add". Se você rodar o teste que citei, vai falhar, exatamente porque não tem as regras ainda. Mas, se lá dentro do método propõe você colocar uma regra tipo "só adicione na lista, se o usuário anterior não for o mesmo deste", e depois disso rodar o teste, vai dar certo.

Com isso, a gente pode até notar que, o TDD não é apenas "fazer o teste antes da funcionalidade", mas sim pensar em como a funcionalidade deve ser feita. Espero que o que eu tenha dito esclareça sua dúvida. Se não, eu ou outra pessoa vai tentar explicar melhor.

Abraço.