35

为什么 JUnit 5 package-private 中的默认访问修饰符是?

JUnit 4 中的测试必须是公开的。

将其更改为包私有有什么好处?

4

2 回答 2

48

为什么 JUnit 5 package-private 中的默认访问修饰符是?

这不是“默认”。从技术上讲,没有默认值。相反,在 JUnit Jupiter 中,您可以选择:publicprotectedpackage-private。

将其更改为包私有有什么好处?

好处是你不再有类型public了。如果您的 IDE 自动为您生成测试方法和测试类,请public随意离开它们public

但是......如果您自己输入方法,那么请不要这样做,public除非您正在设计测试类以从其他包中继承,在这种情况下,您希望将可覆盖的测试方法设置为publicprotected。当然,接口default方法必须是public.

长话短说:我们(JUnit 5 团队)信奉“少即是多”的原则,这意味着您为实现目标而输入的内容越少越好!

于 2019-03-18T21:33:31.167 回答
7

这是 JUnit 5的特性,它为测试类和方法提供了更好的封装

将 Jupiter 测试包设为私有 #679

测试类大多位于测试类的同一个包中:

更好的方法是将测试放在一个单独的并行目录结构中,并与包对齐。

main/                          test/
   com/                           com/
      xyz/                           xyz/
          SomeClass.java               SomeClassTests.java

这种方法允许测试代码访问被测类的所有公共和封装可见成员。

于 2019-03-18T07:07:55.367 回答