为什么 JUnit 5 默认访问修饰符更改为 package-private

Why JUnit 5 default access modifier changed to package-private

为什么 JUnit 5 包中的默认访问修饰符是私有的?

JUnit 4 中的测试必须是 public。

改成package-private有什么好处?

这是 JUnit 5 feature,它为测试 classes 和方法

提供了更好的封装

Make Jupiter tests package private #679

测试class主要位于class测试的same package

better way is to place the tests in a separate parallel directory structure with package alignment.

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

This approach allows test code to access all the public and package visible members of the classes under test.

Why is the default access modifier in JUnit 5 package-private?

这不是 "default"。技术上没有默认值。相反,在 JUnit Jupiter 中,您可以选择:publicprotected 或 package-private.

What is the benefit of changing it to package-private?

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

但是......如果你自己输入方法,那么就不要 public 除非你正在设计你的测试 类 以从其他包进行子类化,在这种情况下你想要使您的 可覆盖 测试方法 publicprotected。当然,接口 default 方法必须是 public.

长话短说:我们(JUnit 5 团队)相信原则 "Less is more",这意味着您为实现目标而输入的内容越少越好!