Durante los últimos años, siempre pensé que en Java, Reflection se utiliza ampliamente durante las pruebas unitarias. Dado que algunas de las variables/métodos que deben verificarse son privados, de alguna manera es necesario leer los valores de los mismos. Siempre pensé que la Reflection API también se usa para este propósito.¿Es una mala práctica usar Reflection in Unit testing?
La semana pasada tuve que probar algunos paquetes y, por lo tanto, escribir algunas pruebas JUnit. Como siempre, utilicé Reflection para acceder a campos y métodos privados. Pero mi supervisor que verificó el código no estaba muy contento con eso y me dijo que la Reflection API no estaba destinada a usarse para tal "piratería". En cambio, sugirió modificar la visibilidad en el código de producción.
¿Es realmente una mala práctica usar Reflection? Realmente no puedo creer que-
Edit: Debo haber mencionado que me requirieron que todas las pruebas están en un paquete separado llamado prueba (así que usar visibilidad protegida por ejemplo, no era una solución posible también)
¿Qué tipo de acceso practicas con reflexión, conjunto, obtención o ambos? – fish
@fish: uso solo para verificar si se configuran algunos valores específicos – RoflcoptrException
Es una práctica normal en Java colocar las pruebas en el mismo paquete para que pueda probar las clases de "paquete privado" (acceso predeterminado). –