Estou aprendendo TDD usando c #, tanto quanto sei que o teste deve impulsionar o desenvolvimento , ou seja, primeiro escreva um teste com falha depois de escrever o código mínimo para passar no teste e refatorar.
Mas também é dito que " Programa para Interface, não Implementação ", então escreva uma interface primeiro . É aqui que começa a minha confusão: se estou escrevendo a Interface primeiro, está violando duas coisas
O código que é escrito para a interface não é conduzido pelo teste .
Não é o mínimo, obviamente, eu posso escrever com uma classe simples.
Devo começar escrevendo testes para a interface também? sem nenhuma implementação, o que vou testar?
Se esta pergunta parece bobagem, desculpe-me por isso, mas estou totalmente confuso. Pode ser que eu esteja levando as coisas muito literalmente.
contract
. Isso pode estar na forma de uma classe abstrata, por exemplo, embora não deva ser uma classe / método virtual porque você não pode instanciar.
interface
para tudo. Aclass
também fornece uma interface, porque você pode ocultar os detalhes da implementação emprivate
variáveis.