Domanda

come scrivere unit test in classi interne ???

È stato utile?

Soluzione

Scrivi test che specificano il comportamento dell'interfaccia esterna della classe di livello superiore. Se quella classe utilizza classi interne per implementare quel comportamento o meno, è un dettaglio di implementazione della classe e i test non hanno bisogno di sapere nulla al riguardo.

Se la classe interna non può essere adeguatamente testata attraverso l'interfaccia della classe di livello superiore, di solito è meglio spostare la classe interna e testarla direttamente come nuova classe di livello superiore. Volere testare le classi interne è un odore di codice secondo cui la classe interna potrebbe essere abbastanza significativa da essere una classe di livello superiore.

Altri suggerimenti

Non che lo consiglierei, ma puoi anche usare InternalsVisibleToAttribute .

Quando si utilizza MS Visual Studio per Unit Test, è sufficiente creare un private accessor . Internamente funziona con riflessioni penso. Dai un'occhiata al codice generato.

Non lo provi direttamente. Sarà testato attraverso la classe in cui è definito.

E, se applichi TDD, come suggeriscono attualmente i tag di questa domanda, qual è il test che scrivi per chiamare una classe interna? Voglio dire, non può essere una classe standard, di proprietà privata della classe a cui stai lavorando?

Abbiamo usato una classe helper che utilizza la reflection per caricare e chiamare metodi su classi interne. È anche possibile modificare l'accessibilità in fase di compilazione utilizzando il simbolo DEBUG ad es.

#if DEBUG
public
#else
internal
#endif
    class MyInternalClass
{
    ...
}

Tuttavia la risposta di Esko Luontola è più corretta in quanto sono le funzionalità o i requisiti aziendali che sono più importanti. È facile concentrarsi troppo sulla copertura del codice piuttosto che testare le aree di rischio importanti.

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