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

问题描述 投票:7回答:2

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

JUnit 4中的测试必须公开。

将其更改为package-private有什么好处?

java junit5 package-private
2个回答
10
投票

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

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

将其更改为package-private有什么好处?

好处是你没有类型public了。如果您的IDE自动为您生成public的测试方法和测试类,请随时留下public

但是......如果你自己输入这些方法,那么除非你设计的测试类用于从其他包中进行子类化,否则不要使用public,在这种情况下,你想要使用可重写的测试方法publicprotected 。当然,接口default方法必须是public

简而言之,简称:我们(JUnit 5团队)相信“少即是多”这一原则,这意味着您为实现目标而打字越少越好!


3
投票

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

让Jupiter测试包私有#679

测试类主要位于测试类的same package中:

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

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

此方法允许测试代码访问所测试的类的所有公共和包可见成员。

© www.soinside.com 2019 - 2024. All rights reserved.