The JUnit runner will need to access the field reflectively to run the rule. If the field was private the access would throw IllegalAccessException
.
Another option would have been to have the runner modify the access from private to public before running the rule. However that could cause problems in case a security manager is enabled.
If you want to avoid having public fields in your test class you can from JUnit 4.11 annotate methods that return a Rule
with @Rule
or @ClassRule
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…