JUnit 5测试方法可见性疑问:protected与包级私有选择困惑
JUnit 5测试方法访问权限解析
核心内容拆解
JUnit 5 放宽了对测试方法访问权限的限制,不再强制要求测试方法必须是public,允许使用以下两种权限:
- protected修饰的测试方法:这种方法允许同包类及子类访问,完全符合JUnit 5的测试执行要求,但需要多输入
protected这几个字符。 - 包级私有测试方法:也就是Java中不写任何访问修饰符的默认权限,仅允许同包内的类访问。JUnit 5的测试引擎可以通过反射正常调用这类方法,而且因为省去了访问修饰符的编写,代码更简洁,这也是书籍推荐它的核心原因。
代码示例对比
包级私有测试方法(推荐写法):
// 无需添加任何访问修饰符,直接定义测试方法 void testUserLoginSuccess() { // 测试逻辑代码 }
protected修饰的测试方法:
protected void testUserLoginSuccess() { // 测试逻辑代码 }
补充说明
JUnit 5 之所以支持非public的测试方法,是因为它通过反射机制来调用测试方法,不需要依赖方法的访问权限来触发执行。这种设计让测试代码可以更简洁,避免了冗余的public修饰符(过去JUnit 4强制要求public,JUnit 5做了优化)。
内容的提问来源于stack exchange,提问作者divad
相关产品推荐
相关产品推荐

