Lo más fácil es comenzar con una clase que no tenga dependencias, una clase que sea utilizada por otras clases, pero que no use otra clase. Luego debe tomar una prueba, preguntándose "¿cómo sabría si esta clase (este método) se implementa correctamente?".
Luego podría escribir una primera prueba para interrogar a su objeto cuando no se inicialice, podría devolver NULO o lanzar una excepción. Luego puede inicializar (tal vez solo parcialmente) su objeto, y probar la prueba devuelve algo valioso. Luego puede agregar una prueba con otro valor de inicialización, debe comportarse de la misma manera. En ese momento, suelo probar una condición de error, como intentar inicializar el objeto con un valor no válido.
Cuando haya terminado con el método, va a otro método de la misma clase hasta que haya terminado con toda la clase.
Luego puede elegir otra clase, ya sea otra clase independiente, o clase que use la primera clase que haya implementado.
Si elige una clase que dependa de su primera clase, creo que es aceptable tener su entorno de prueba, o su segunda clase, instanciando la primera clase, ya que se ha probado completamente. Cuando falla una prueba sobre la clase, debe poder determinar en qué clase reside el problema.
En caso de que descubra un problema en la primera clase, o pregunte si se comportará correctamente bajo ciertas condiciones particulares, escriba una nueva prueba.
Si sube las dependencias y cree que las pruebas que está escribiendo abarcan muchas clases para calificar como pruebas unitarias, entonces puede usar un objeto simulado para aislar una clase del resto del sistema.
Si ya tiene el diseño - como usted ha indicado en un comentario en la respuesta de Jon Limjap, entonces no estamos haciendo TDD puro desde TDD es sobre el uso de pruebas de unidad para que su diseño emerger.
Dicho esto, no todas las tiendas permiten un TDD estricto, y usted tiene un diseño a mano, así que utilicémoslo y hagamos TDD, aunque sería mejor decir Prueba-Primero-Programación, pero ese no es el punto, ya que así es también como comencé TDD.
Por favor, podría explicar qué significa "hacer una espiga". No he encontrado la terminación antes. Presumiblemente, ¿te refieres a un prototipo? – Ben
Spike proviene de XP (programación extrema), un pico es más pequeño que un prototipo (mis picos suelen tardar de media hora a una hora). Significa escribir código desechable para probar una pequeña pieza de tecnología.Como no está escribiendo código de producción, puede hacer picos sin probar y refactorizar. – Mendelt