Domanda

Sto seguendo un corso in pratiche agili e ho compiti a casa. Quello che mi ha insegnato, è che prima di cambiare il codice (refactoring o aggiunta di funzionalità) dovrei aggiungere qualche test, al fine di ottenere la fiducia e assicurarmi che non cambierò il comportamento durante il refactoring. Questo è chiaro e ha senso, ma cosa succede se il codice non è testabile senza fare qualche refactoring prima?

Esempio semplice:

public class Summation
{
    private int addend1;
    private int addend2;

    public Summation(int addend1, int addend2)
    {
        this.addend1 = addend1;
        this.addend2 = addend2;
    }

    public int doSum()
    {
        System.out.println(addend1 + addend2);
    }

    // Getters/setters
}
.

Vorrei eseguire un test di accettazione / integrazione usando Adatta e verificare che la seguente tabella sia verificata:

 ----------------------------
| addend1 | addend2 | result |
 ----------------------------
| 1       | 1       | 2      |
 ----------------------------
| 1       | -1      | 0      |
 ----------------------------
| -1      | 1       | 0      |
 ----------------------------
| -1      | -1      | -2     |
 ----------------------------
.

Ma, poiché la funzione doSum() stampa la somma per il flusso di uscita standard, è difficile scrivere un test per questo (preferisco evitare di intercettare l'output standard). Avrebbe più senso Rilavare leggermente il codice per avere un metodo che restituisce la somma. Ma poiché sono tecnicamente "non permesso" di cambiare il codice prima di scrivere qualsiasi test, questo non è raccomandato.

Puoi darmi qualche suggerimento? Come procederebbe?

Grazie!

È stato utile?

Soluzione

Suoni simili a Questa domanda .

Se è consentito o meno di modificare il codice, sei forzato a intercettare il flusso di uscita standard.In ogni caso, è una parte del comportamento.

Altri suggerimenti

È possibile scrivere un file test.cpp per chiamare Summation.Summment (x, y) con vari valori per X e Y nella tabella e verificare / registrare i risultati.Assicurati che i risultati siano ciò che ti aspetti.Successivamente, è ora possibile modificare la classe di riepilogo ed eseguire nuovamente i test (da test.cpp) per garantire che i valori siano uguali a quelli inizialmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top