为什么JUnit中的@Rule注释字段必须是公共的?
在JUnit测试用例中, @Rule
注释的@Rule
必须是公共的。 它打破了常见的Java编码约定(所有类成员变量都不应该是公共的)。 为什么JUnit需要这个?
@Rule
文档: https : //github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
JUnit运行器需要reflection访问该字段以运行规则。 如果该字段是私有的,则访问将抛出IllegalAccessException
。
另一种选择是让跑步者在运行规则之前修改从私人到公共的访问。 但是,如果启用了安全管理器,则可能会导致问题。
如果要避免在测试类中使用公共字段,可以从JUnit 4.11注释使用@Rule
或@ClassRule
返回Rule
方法。