how - java junit exception expected
¿Por qué los campos anotados de @Rule en JUnit tienen que ser públicos? (1)
En el caso de prueba de JUnit, un campo anotado por @Rule
debe ser público. Se rompe una convención de codificación Java común (todas las variables de miembros de clase no deberían ser públicas). ¿Por qué JUnit requiere esto?
Documentación para @Rule
: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
El corredor JUnit deberá acceder al campo de manera reflexiva para ejecutar la regla. Si el campo fuera privado, el acceso lanzaría la IllegalAccessException
.
Otra opción hubiera sido que el corredor modificara el acceso de privado a público antes de ejecutar la regla. Sin embargo, eso podría causar problemas en caso de que un administrador de seguridad esté habilitado.
Si desea evitar tener campos públicos en su clase de prueba, puede @Rule
métodos de anotación JUnit 4.11 que devuelven una Rule
con @Rule
o @ClassRule
.