Devo fare un test unitario separato per un metodo, se modifica solo lo stato genitore?

0

Le classi, che modificano lo stato della classe genitore, ma non se stessa, devono essere testate separatamente? E separatamente, intendo mettere il test nella classe di test unitaria corrispondente, che testa quella specifica classe.

Sto sviluppando una libreria basata su metodi concatenati, che restituiscono una nuova istanza di un nuovo tipo nella maggior parte dei casi, dove viene chiamato un metodo concatenato. Le istanze restituite modificano solo lo stato padre principale, ma non se stesso.

Esempio eccessivamente semplificato, per ottenere il punto:

    public class BoxedRabbits
    {
        private readonly Box _box;
        public BoxedRabbits(Box box)
        {
            _box = box;
        }

        public void SetCount(int count)
        {
            _box.Items += count;
        }
    }

    public class Box
    {
        public int Items { get; set; }
        public BoxedRabbits AddRabbits()
        {
            return new BoxedRabbits(this);
        }
    }

var box = new Box();
box.AddRabbits().SetCount(14);

Di ', se scrivo un test unitario sotto i test di unità di classe Box :

box.AddRabbits().SetCount(14)

Potrei dire in modo efficace che ho già testato anche la classe BoxedRabbits . È questo il modo sbagliato di approcciare questo, anche se è molto più semplice scrivere prima un test per la chiamata precedente, quindi scrivere prima un test unitario per BoxedRabbits separatamente?

    
posta Dante 25.05.2013 - 00:11
fonte

2 risposte

1

Se la classe è davvero così banale e il resto della tua suite di test è sufficientemente completo, allora c'è un grado abbastanza alto di certezza che la copertura del test della classe banale è piuttosto alta e qualsiasi modifica all'API di quella classe o la funzionalità influenzerà inevitabilmente diversi test di unità. In tal caso, farei a meno del test unitario aggiuntivo.

Se, tuttavia, la classe andava oltre non banale e coinvolgeva qualsiasi tipo di sintassi del linguaggio che potesse essere modificata da qualsiasi altra parte della sorgente ( un'intestazione che definiva le variabili di configurazione / typedefs ), o strutture di dati che dipendono dall'implementazione, quindi creerei certamente un test unitario.

    
risposta data 25.05.2013 - 01:14
fonte
0

La mia regola generale è se ha il controllo di flusso, quindi ha un test unitario. Questo potrebbe non essere sempre vero, ma il codice semplice di solito ha dei semplici test unitari. Pertanto, testare un codice semplice di solito non è un grosso problema. Quindi, perché non assicurarti di non aver pensato per errore meno di e di tipo maggiore di?

    
risposta data 24.06.2013 - 17:14
fonte

Leggi altre domande sui tag