前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JUnit 5和JUnit 4比较

JUnit 5和JUnit 4比较

作者头像
全栈程序员站长
发布2022-07-01 19:41:55
7930
发布2022-07-01 19:41:55
举报

大家好,又见面了,我是你们的朋友全栈君。

JUnit 5旨在调整java 8样式的编码,并且比JUnit 4更强大和灵活。在这篇文章中,JUnit 5 vs JUnit 4,我们将关注junit 4和junit 5之间的一些主要差异。

1. JUnit 5 vs JUnit 4 – 注释

两个版本中的大多数注释都是相同的,但很少有区别。这是一个快速比较。

特征

JUNIT 4

JUNIT 5

声明一种测试方法

@Test

@Test

在当前类中的所有测试方法之前执行

@BeforeClass

@BeforeAll

在当前类中的所有测试方法之后执行

@AfterClass

@AfterAll

在每个测试方法之前执行

@Before

@BeforeEach

每种测试方法后执行

@After

@AfterEach

禁用测试方法/类

@Ignore

@Disabled

测试工厂进行动态测试

NA

@TestFactory

嵌套测试

NA

@Nested

标记和过滤

@Category

@Tag

注册自定义扩展

NA

@ExtendWith

2. JUnit 5和JUnit 4之间的其他差异

2.1 组成

JUnit 4将所有内容捆绑到单个jar文件中。

Junit 5由3个子项目组成,即JUnit Platform,JUnit Jupiter和JUnit Vintage。

  1. JUnit平台 它定义了TestEngine用于开发在平台上运行的新测试框架的API。
  2. JUnit Jupiter 它具有所有新的junit注释和TestEngine实现,以运行使用这些注释编写的测试。
  3. JUnit Vintage 支持在JUnit 5平台上运行JUnit 3和JUnit 4编写的测试。

2.2。必需的JDK版本

Junit 4需要Java 5或更高版本。

Junit 5需要Java 8或更高版本。

2.3。断言

在Junit 4中,org.junit.Assert具有所有断言方法来验证预期结果和结果。 它们接受错误消息的额外参数作为方法签名中的FIRST参数。例如

public static void assertEquals(long expected, long actual) public static void assertEquals(String message, long expected, long actual)

在JUnit 5中,org.junit.jupiter.Assertions包含大多数断言方法,包括附加assertThrows()assertAll()方法。assertAll()到目前为止处于实验状态,并用于分组断言。 JUnit 5断言方法也有重载方法,以支持在测试失败时传递错误消息,例如

public static void assertEquals(long expected, long actual) public static void assertEquals(long expected, long actual, String message) public static void assertEquals(long expected, long actual, Supplier messageSupplier)

2.4。假设

在Junit 4中,org.junit.Assume包含用于说明测试有意义的条件的假设的方法。它有以下五种方法:

  1. assumeFalse()
  2. assumeNoException()
  3. assumeNotNull()
  4. 假使,假设()
  5. assumeTrue()

在Junit 5中,org.junit.jupiter.api.Assumptions包含用于说明测试有意义的条件的假设的方法。它有以下三种方法:

  1. assumeFalse()
  2. 假使,假设()
  3. assumeTrue()

2.5。标记和过滤

在Junit 4中,使用了@category注释。

在Junit 5中,使用了@tag注释。

2.6。测试套房

在JUnit 4,@RunWith@Suite注释。例如

import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ ExceptionTest.class, TimeoutTest.class }) public class JUnit4Example { }

在JUnit 5 @RunWith@SelectPackages@SelectClasses

import org.junit.platform.runner.JUnitPlatform; import org.junit.platform.suite.api.SelectPackages; import org.junit.runner.RunWith; @RunWith(JUnitPlatform.class) @SelectPackages("com.howtodoinjava.junit5.examples") public class JUnit5Example { }

2.7。第三方整合

在Junit 4中,没有对第三方插件和IDE的集成支持。他们必须依靠反射。

JUnit 5为此专门设立了子项目,即JUnit平台。它定义了TestEngine用于开发在平台上运行的测试框架的API。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/147142.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. JUnit 5 vs JUnit 4 – 注释
  • 2. JUnit 5和JUnit 4之间的其他差异
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档