He leído toneladas de artículos, he visto toneladas de screencasts sobre TDD, pero todavía estoy luchando con su uso en proyectos del mundo real. Mi problema principal es que no sé por dónde empezar, qué prueba debería ser la primera. Supongamos que tengo que escribir la biblioteca del cliente llamando a los métodos del sistema externo (por ejemplo, notificación). Quiero que este cliente para que funcione de la siguiente manera¿Cómo elegir el punto de partida de TDD en un proyecto del mundo real?
NotificationClient client = new NotificationClient("abcd1234"); // client ID
Response code = client.notifyOnEvent(Event.LIMIT_REACHED, 100); // some params of call
Existe cierta traducción y preparación mensaje formato detrás de las escenas, así que me gustaría para ocultarlo de mis aplicaciones cliente.
No sé dónde y cómo comenzar. ¿Debo hacer algunas clases aproximadas para esta biblioteca? ¿Debo comenzar con las pruebas de la siguiente manera NotificationClient
public void testClientSendInvalidEventCommand() {
NotificationClient client = new NotificationClient(...);
Response code = client.notifyOnEvent(Event.WRONG_EVENT);
assertEquals(1223, code.codeValue());
}
Si es así, la prueba de este tipo que estoy obligado a escribir la implementación completa de trabajo a la vez, sin pasos de bebé como estados TDD. Puedo burlarme de sosmething en Client pero luego tengo que saber esto para burlarme por adelantado, así que necesito un poco de preparación inicial para ser hecho.
Tal vez debería comenzar desde la parte inferior, probar este componente de formato de mensaje primero y luego usarlo en la prueba de cliente correcta?
¿De qué manera es la correcta para llevar? ¿Deberíamos siempre comenzar desde arriba (cómo lidiar con este gran paso requerido)? ¿Podemos comenzar con cualquier clase realizando una pequeña parte de la función deseada (como formateador en este ejemplo)?
Si tuviera que saber dónde golpear con mis pruebas, sería mucho más fácil para mí proceder.
¿Pero cómo encontrar esas clases para escribir las pruebas unitarias y por dónde empezar? Supongo que necesito tener algunas clases configuradas para poder elegir el punto de partida para TDD. Pero entonces, ¿dónde debería estar este punto? ¿Debería estar en los bordes del sistema, o puede estar en el medio del sistema, como se mencionó en el formato? –
Puede TDD ascendente o descendente. No veo cómo el formateador se ajusta a tu ejemplo. Con una prueba, debe escribir la cantidad de código ** mínima ** necesaria para que pase. –