为什么TogglzRule必须公开?

Cen*_*giz 2 togglz

如果我在单元测试中声明TogglzRule它必须是公共的,否则会抛出异常: java.lang.Exception: The @Rule 'togglzRule' must be public.

我以前宣称成员私有,为什么这不可能?

chk*_*kal 6

这是一个JUnit限制.需要在不做任何"肮脏技巧"的情况下注入规则工作.来自javadocs @Rule:

注释引用返回规则的规则或方法的字段.字段必须是公共的,而不是静态的,以及org.junit.rules.TestRule(首选)或的子类型org.junit.rules.MethodRule.