come scrivere test di unità per classi interne ???testare una classe interna
risposta
Si scrivono test che specificano il comportamento dell'interfaccia esterna della classe principale. Se quella classe usa le classi interne per implementare quel comportamento o meno, è un dettaglio di implementazione della classe, ei test non hanno bisogno di sapere nulla a riguardo.
Se la classe interna non può essere adeguatamente testata tramite l'interfaccia di classe di livello superiore, di solito è meglio spostare la classe interna e verificarla direttamente come una nuova classe di livello superiore. Volendo testare le classi interne è un odore di codice che la classe interna potrebbe essere abbastanza significativa da essere una classe di alto livello.
Quando si utilizza MS Visual Studio per i test delle unità, è sufficiente creare uno private Accessor. Internamente funziona con riflessioni che penso. Basta dare un'occhiata al codice generato.
Non testarlo direttamente. Sarà testato attraverso la classe in cui è definito.
E, se si applica TDD, come questo tag di domanda attualmente implica, qual è il test che si scrive solo quella chiamata per una classe interiore? Voglio dire, non può essere una classe standard, di proprietà privata della classe a cui stai lavorando?
Abbiamo utilizzato una classe helper che utilizza reflection per caricare e chiamare metodi su classi interne. E 'anche possibile cambiare l'accessibilità al momento della compilazione usando il simbolo DEBUG esempio
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
Tuttavia la risposta di Esko Luontola è più corretta in quanto è i requisiti di funzionalità o di business, che sono più importanti. È facile concentrarsi troppo sulla copertura del codice piuttosto che testare le aree di rischio importanti.
Non che lo consiglierei, ma è anche possibile utilizzare lo InternalsVisibleToAttribute.
Vedi le spiegazioni dettagliate da http://msdn.microsoft.com/en-us/library/bb385974.aspx
La pagina collegata non è più disponibile – Catch22
- 1. È una classe interna
- 2. Classe interna classe Golang
- 3. Come testare la libreria di classi interna?
- 4. Subclassing classe interna da esterno Classe contro altra classe interna
- 5. Come testare una classe Singleton?
- 6. classe Annotate con classe interna
- 7. sintassi Strano per istanziare una classe interna
- 8. Come rendere una classe interna Parcelable
- 9. Come inoltrare dichiaro una classe interna?
- 10. Inizializzatore statico su una classe interna?
- 11. Metodo principale in una classe interna statica.?
- 12. Android- chiamata Intent da una classe interna
- 13. Una classe interna distorta in Java
- 14. Classe interna di istanziazione
- 15. Classe Struttura interna
- 16. Testare una classe con una classe statica metodo/dipendenza
- 17. classe di primo livello che si estende una classe interna
- 18. Una classe interna di una classe template può essere una classe non template?
- 19. Classe interna che accede alla classe esterna
- 20. pitone creare dinamicamente classe con classe interna
- 21. Come testare una classe che implementa Runnable
- 22. Serializzazione della classe interna statica
- 23. Classe statica interna in Java
- 24. Come sovrascrivere/estendere una classe interna da una sottoclasse?
- 25. static_assert definizione classe interna/esterna
- 26. Classe interna ed ereditarietà Java
- 27. Comportamento membro diverso della classe interna se la classe interna estende la classe esterna?
- 28. Java: Statico vs classe interna
- 29. classe interna che si estende
- 30. proguard Android, mantenere classe interna
dici che non consiglio questo, ma come è possibile a risolvere qualcosa di simile? http://stackoverflow.com/questions/15440935/how-to-test-internal-class-library –
@Thomas: esattamente come afferma Esko nella sua risposta. O testate le API interne indirettamente tramite la vostra interfaccia pubblica, oppure promuovete le vostre API interne per pubblicarle e testarle direttamente. –