为什么JUnit中的@Rule注释字段必须公开?
在JUnit测试用例中,由@Rule
注释的@Rule
必须是公共的。 它打破了常见的Java编码约定(所有类成员变量都不应该公开)。 为什么JUnit需要这个?
@Rule
文档:https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
JUnit运行者需要反射地访问该字段以运行规则。 如果该字段是私人的访问将抛出IllegalAccessException
。
另一个选择是让运行者在运行规则之前修改从私人到公众的访问权限。 但是,如果启用安全管理器,可能会导致问题。
如果你想避免在你的测试类中拥有公共字段,你可以从JUnit 4.11注释返回一个使用@Rule
或@ClassRule
的Rule
方法。
上一篇: Why @Rule annotated fields in JUnit has to be public?
下一篇: Web Deploy from Visual Studio 2012 to a remote IIS 8 server