TDD: esempio di codice e spiegazione dettagliata di "Man mano che i test diventano più specifici, il codice di produzione diventa più generico."

4

Cerco di capire meglio ciò che l'affermazione di seguito indica su di Uncle Bob. TDD Harms Architecture ,

"Man mano che i test diventano più specifici, il codice di produzione diventa più generico."

Di seguito sono riportate le mie conoscenze su come ottenere più generico sul codice di produzione:

  • Utilizzo dell'astrazione per gli argomenti del metodo e tipo di restituzione, se possibile
  • c'è dell'altro in questo?

E il codice di prova?

Idealmente, l'esempio di codice ti aiuterà a capirlo.

    
posta Pingpong 17.07.2017 - 18:06
fonte

1 risposta

9

Diciamo che provo a testare la funzione di aggiunta della calcolatrice.

Test 1:

public void Adding_0_And_0_Should_Return_0() { ... }

Produzione 1:

public int Add(int a, int b)
{
   return 0;
}

Test 2:

public void Adding_3_And_0_Should_Return_3() { ... }

Produzione 2:

public int Add(int a, int b)
{
   return a;
}

Test 3:

public void Adding_6_And_4_Should_Return_10() { ... }

Produzione 3:

public int Add(int a, int b)
{
   return a + b;
}

Puoi vedere i test diventare gradualmente più specifici (presi nel loro insieme - applicando più vincoli con ogni caso), e di conseguenza, a ogni iterazione, l'implementazione diventa più generica, perché una singola implementazione deve gestire un numero crescente di casi di test specifici.

Quindi inizialmente il tuo codice di produzione può gestire solo un caso in cui il risultato dell'aggiunta è 1. Quindi con la seconda iterazione puoi gestire un caso più generico, dove il tuo primo numero può essere qualsiasi cosa tu voglia, purché tu sia " aggiungendolo a 0. Con il caso finale, si diventa completamente generici, essendo in grado di aggiungere due numeri, non solo quelli specifici dei test precedenti.

    
risposta data 17.07.2017 - 18:31
fonte

Leggi altre domande sui tag