Estoy aprendiendo TDD usando c #, por lo que sé, la prueba debería impulsar el desarrollo , es decir, primero escribir una prueba fallida después de escribir el código mínimo para pasar la prueba y luego refactorizar.
Pero también se dice que " Programa a la interfaz, no a la implementación ", así que primero escribe una interfaz . Aquí es donde comienza mi confusión, si estoy escribiendo Interface primero, entonces está violando dos cosas
El código que está escrito para la interfaz no está controlado por la prueba .
No es lo mínimo, obviamente, puedo escribirlo con una clase simple.
¿Debo comenzar escribiendo pruebas para la interfaz también? sin ninguna implementación, ¿qué voy a probar?
Si esta pregunta suena tonta, perdón por eso, pero estoy completamente confundido. Puede ser que estoy tomando las cosas demasiado literalmente.
contract. Esto podría ser en forma de una clase abstracta, por ejemplo, aunque no debería ser una clase / método virtual porque no debería ser capaz de crear una instancia.
interfacepara todo. Aclasstambién proporciona una interfaz, porque puede ocultar detalles de implementación enprivatevariables.