Sto imparando TDD usando c #, per quanto ne so il test dovrebbe guidare lo sviluppo , ovvero scrivere prima un test fallito dopo aver scritto il codice minimo per passare il test, quindi eseguire il refactoring.
Ma si dice anche che " Programma per l'interfaccia, non implementazione ", quindi scrivere prima un'interfaccia . È qui che inizia la mia confusione, se sto scrivendo prima Interface, allora sta violando due cose
Il codice scritto per l'interfaccia non è guidato dal test .
Ovviamente non è il minimo indispensabile, posso scriverlo con una semplice classe.
Dovrei iniziare scrivendo anche test per l'interfaccia? senza alcuna implementazione che cosa ho intenzione di testare?
Se questa domanda sembra sciocca per quello, ma sono assolutamente confuso. Forse sto prendendo le cose troppo alla lettera.
contract
. Questo potrebbe essere sotto forma di una classe astratta, ad esempio, anche se non dovrebbe essere una classe / metodo virtuale perché non dovresti essere in grado di istanziarlo.
interface
per tutto. Aclass
fornisce anche un'interfaccia, perché è possibile nascondere i dettagli di implementazione inprivate
variabili.