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

Noa*_*amV 3 java junit junit5

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

例如,当我尝试将数组与assertArrayEquals() Eclipse 进行比较时,建议从其中之一导入它

org.junit.Assert.assertArrayEquals
 or 
org.junit.jupiter.api.Assertions.assertArrayEquals
Run Code Online (Sandbox Code Playgroud)

两种方法都可以完美工作。这两者之间有什么根本区别吗?

AlB*_*lue 6

它\xe2\x80\x99比其他任何东西都更具有历史意义。该org.junit包是第一个,混合了 API 和用于运行测试和测试用例的实现类。

\n

对于 JUnit 5 api,这些类被分割在不同的包中,这样当您拥有注释时,它们可以单独包含在您的运行时中,并且测试执行引擎位于不同的包中。

\n

为了让事情变得简单,这些类保留了相同的名称,因此您只需更改类路径中包含的包即可。

\n

因此,您可以使用其中任何一种,但请尝试一致地使用一个包。

\n

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

\n

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

\n

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

\n