testare una classe interna
-
03-07-2019 - |
Domanda
come scrivere unit test in classi interne ???
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.
Consulta le spiegazioni dettagliate da http://msdn.microsoft.com/en -us / library / bb385974.aspx