JUnit框架包含2个Assert类(显然是在不同的包中),每个类上的方法看起来非常相似。有人能解释一下这是为什么吗?

我引用的类是:junit.framework.Assert和org.junit.Assert。


当前回答

JUnit 3。X: junit.framework.Assert

JUnit 4。X: org.junit.Assert

最好使用最新的版本,特别是在运行带有注释支持的JDK5或更高版本时。

其他回答

实际上有一个功能上的改变:如果你使用带有float或double的双参数assertEquals(), org.junit.Assert会报错,而junit.framework.Assert会默默地自动装箱。

我做了一个粗略的源代码比较,没有严重的变化。在org.junit.Assert中添加了许多注释,并完成了一些重构。唯一的变化是与数组的比较。有一些代码清理,但(恕我直言)没有功能上的变化。

JUnit 3。X: junit.framework.Assert

JUnit 4。X: org.junit.Assert

最好使用最新的版本,特别是在运行带有注释支持的JDK5或更高版本时。

(JUnit 3的)旧方法是通过扩展JUnit .framework. testcase来标记测试类。它继承了junit.framework.Assert本身,并且您的测试类获得了以这种方式调用assert方法的能力。

从JUnit的第4版开始,框架使用注解来标记测试。因此您不再需要扩展TestCase。但这意味着assert方法不可用。但是您可以对新的Assert类进行静态导入。这就是为什么新类中的所有assert方法都是静态方法。所以你可以这样导入它:

import static org.junit.Assert.*;

在此静态导入之后,您可以不带前缀地使用此方法。

在重新设计时,他们也搬到了新的包装组织。它更好地遵循包命名的常规约定。

我相信他们正在从junit.framework重构到org。维护junit和junit.framework. assert是为了向后兼容。