【问题标题】:Why JUnit 5 default access modifier changed to package-private为什么 JUnit 5 默认访问修饰符更改为 package-private
【发布时间】:2019-08-08 12:02:28
【问题描述】:

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

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

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

【问题讨论】:

  • ...你认为在 JUnit5 中声明为 public 的测试不再起作用?
  • 好处是不用到处加public
  • @Stultuske 哈哈,不,我没有写过这样的东西......

标签: java encapsulation junit5 package-private


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    将 Jupiter 测试包设为私有 #679

    测试类大多位于被测类的same package

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

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

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

    【讨论】:

    • 我不确定这是否回答了我的问题...我知道这是一个功能,您编写的所有内容都是所有测试框架的通用方法。测试包私有而不是公开有什么好处?
    • @wojtek1902 它为测试类和方法提供了更好的封装
    • 我需要在测试中封装什么??
    • @wojtek1902 测试仍然是 java 代码(虽然没有在生产中执行)
    • 老实说,这并不能说服我...我看不出测试中的封装有什么好处...
    猜你喜欢
    • 2017-02-19
    • 2016-04-08
    • 2011-04-12
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多