Assert 中的方法和 junit 5 中的 Assertions 包有什么区别?

What is the difference between the methods in Assert and the Assertions packages in junit 5?

每当我创建断言时,Eclipse 都会建议我从这两个包之一导入它。

例如,当我尝试将数组与 assertArrayEquals() 进行比较时 Eclipse 建议从任一

导入它
org.junit.Assert.assertArrayEquals
 or 
org.junit.jupiter.api.Assertions.assertArrayEquals

两种方法都很有效。 这两者有什么根本区别吗?

它比什么都具有历史意义。 org.junit 包是第一个,它混合了 API 和实现 classes 用于 运行 测试和测试用例。

对于 JUnit 5 api,classes 被拆分到不同的包中,因此当您拥有注释时,它们可以单独包含在您的运行时中,并且测试执行引擎位于一个不同的包。

为方便起见,classes 保留了相同的名称,因此您只需更改 class 路径中包含的包即可。

因此您可以使用其中任何一种,但请尝试始终使用一个软件包。

另一个观察结果是,将包分开的原因是,您可以拥有一个由一些旧 JUnit 库和一些新库组成的项目。因此,您无需一次重构所有内容即可进行迁移。

https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4

PS 如果您想忽略旧的 JUnit 包,您可以将它们添加到 Eclipse 的首选项中的 step filters,然后 Eclipse 将不会建议该包。