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.
interfacepara tudo. Aclasstambém fornece uma interface, porque você pode ocultar os detalhes da implementação emprivatevariáveis.