Come faccio a testare metodi privati e classi interne usando NUnit?Prova i metodi privati e le classi interne con NUnit?
risposta
Generalmente no. Se esegui un test completo dei metodi pubblici che utilizzano utilizzando i metodi privati e le classi interne, dovresti essere in grado di testare l'intera gamma delle funzionalità private senza esporle.
È necessario esporre un mezzo per richiamarli, possibilmente attraverso una classe derivata specifica per il test.
metodi private:
Se stai cercando di testare i metodi non pubblici, di solito significa che stai facendo male.
Se esistono funzionalità che si desidera testare, ma non si desidera rendere pubbliche sulla classe, il codice sta cercando di dirti qualcosa. La tua classe ha probabilmente troppe responsabilità. Dovresti prendere seriamente in considerazione l'idea di estrarre tale funzionalità privata in una nuova classe, scrivere test per la nuova classe e far sì che la tua vecchia classe abbia un'istanza privata della nuova classe.
classi interne:
questo è più valida, soprattutto se si sta scrivendo una libreria di classi per gli altri da riutilizzare. Potresti avere classi non progettate per uso generale, ma per le quali vuoi scrivere test unitari.
Per questo caso, dare un'occhiata a InternalsVisibleToAttribute.
Il modo in cui gestisco questo è che pubblico tutti i miei metodi. So che suona male, ma sopportami un momento.
Quando si utilizza IoC si dispone di un'interfaccia per ogni classe che ha una logica in esso. Quindi in pratica si codifica contro l'interfaccia e non l'effettiva implementazione. Ciò che facciamo è contrassegnare tutti i metodi pubblici e non influisce sul modo in cui la classe viene utilizzata, tranne che rende possibile scrivere test unitari per ogni metodo in quella classe.
- 1. Dove mettere le classi interne?
- 2. le prove eseguite con le classi interne attraverso Maven
- 3. Le classi interne sono leggere?
- 4. Avere proprietà e metodi privati nelle classi ES6
- 5. JVM e metodi privati
- 6. Metodi e campi privati
- 7. Rendi definitivi i metodi privati?
- 8. Metodi privati su metodi pubblici
- 9. Classi Java interne e nidificate
- 10. Rendi privati i metodi delegati
- 11. Ottenere tutte le classi interne per riflessione
- 12. Quali sono le classi interne finali?
- 13. Intellij auto import per le classi interne
- 14. Quali sono i problemi con le classi interne non statiche e la serializzazione in Java
- 15. supporto classi interne php
- 16. Serializzazione Elasticsearch-Spark che non funziona con le classi interne
- 17. classi interne anonime per i pulsanti
- 18. Perché i metodi "privati" nell'oggetto orientato?
- 19. Comprendere classi generiche interne
- 20. Metodi di accesso all'interno delle classi interne locali in Java
- 21. Condividere le variabili tra classi e metodi
- 22. Devo testare i metodi privati usando RSpec?
- 23. Nunit asincrona eccezione prova affermazione
- 24. Rails ActiveSuppport: Preoccupazione e metodi privati
- 25. Rende le classi interne visibili ad altri gruppi
- 26. Le classi interne statiche devono essere importate per le annotazioni
- 27. Mocking di classi interne con Moq per il test dell'unità
- 28. Le classi interne in enumerazione sono sempre statiche in Java?
- 29. metodi privati in Ruby
- 30. F # Metodi statici privati
Vale anche la pena notare che InternalsVisibleTo può essere utilizzato per esporre costruttori/metodi utilizzati solo dal gruppo di test e mantenere quelli nascosti dal codice client. – jlafay