Ho letto tonnellate di articoli, ho visto tonnellate di screencast sul TDD, ma sto ancora cercando di usarlo nel progetto del mondo reale. Il mio problema principale è che non so da dove cominciare, quale test dovrebbe essere il primo. Supponiamo di dover scrivere una libreria client che chiama i metodi del sistema esterno (ad es. Notifica). Voglio questo client per funzionare come segueCome scegliere il punto di partenza di TDD in un progetto del mondo reale?
NotificationClient client = new NotificationClient("abcd1234"); // client ID
Response code = client.notifyOnEvent(Event.LIMIT_REACHED, 100); // some params of call
C'è un po 'di traduzione e un messaggio di preparazione formato dietro le quinte, quindi mi piacerebbe di nasconderlo dalle mie applicazioni client.
Non so dove e come iniziare. Devo impostare alcune classi approssimative impostate per questa libreria? Devo iniziare con il test NotificationClient come di seguito
public void testClientSendInvalidEventCommand() {
NotificationClient client = new NotificationClient(...);
Response code = client.notifyOnEvent(Event.WRONG_EVENT);
assertEquals(1223, code.codeValue());
}
Se è così, con una tale prova sono costretto a scrivere implementazione di lavoro completo in una sola volta, senza piccoli passi come TDD stati. Posso prendere in giro il client in client ma poi devo sapere che questa cosa viene derisa in anticipo, quindi ho bisogno di un po 'in anticipo.
Forse dovrei iniziare dal basso, testare prima questo componente di formattazione del messaggio e poi usarlo nel test del client giusto?
Quale strada è quella giusta da percorrere? Dovremmo sempre iniziare dall'alto (come affrontare questo enorme passo richiesto)? Possiamo iniziare con qualsiasi classe realizzando una piccola parte della funzione desiderata (come Formatter in questo esempio)?
Se dovessi sapere dove colpire con i miei test, sarebbe molto più facile per me procedere.
Ma come trovare quelle classi per scrivere test unitari e da dove iniziare? Suppongo di dover impostare alcune classi per poter scegliere il punto di partenza per TDD. Ma allora dove dovrebbe essere questo punto? Dovrebbe essere ai bordi del sistema, o può essere nel mezzo del sistema - come menzionato il Formatter? –
È possibile TDD dal basso verso l'alto o dall'alto verso il basso. Non vedo come il Formatter si inserisce nel tuo esempio. Dato un test, dovresti scrivere la ** quantità minima ** di codice necessaria per farlo passare. –