Negli ultimi anni ho sempre pensato che in Java, Reflection è ampiamente utilizzato durante il test delle unità. Poiché alcune delle variabili/metodi che devono essere controllati sono privati, è in qualche modo necessario leggerne i valori. Ho sempre pensato che l'API Reflection sia utilizzata anche per questo scopo.È una cattiva pratica usare Reflection in Unit testing?
La scorsa settimana ho dovuto testare alcuni pacchetti e quindi scrivere alcuni test JUnit. Come sempre ho usato Reflection per accedere a campi e metodi privati. Ma il mio supervisore che ha controllato il codice non è stato molto contento e mi ha detto che l'API di Reflection non era pensata per l'uso di tale "hacking". Invece ha suggerito di modificare la visibilità nel codice di produzione.
È davvero una cattiva pratica usare Reflection? Non posso davvero credere che-
Edit: avrei detto che mi è stato richiesto che tutti i test sono in un pacchetto separato chiamato prova (in modo da utilizzare protetta visibilità ad esempio, non era una possibile soluzione troppo)
Che tipo di accesso pratichi con la riflessione, l'impostazione, l'acquisizione o entrambi? – fish
@fish: uso solo per verificare se alcuni valori specifici sono stati impostati – RoflcoptrException
È normale pratica in Java inserire i test nello stesso pacchetto in modo da poter testare le classi "pacchetto privato" (accesso predefinito). –