2个JUnit Assert类之间的差异

JUnit框架包含2个Assert类(很明显,在不同的包中),每个方法看起来都非常相似。 有人可以解释为什么这是?

我所指的类是: junit.framework.Assertorg.junit.Assert

(Junit 3)的旧方法是通过扩展junit.framework.TestCase来标记testing类。 inheritance的junit.framework.Assert本身和你的testing类获得了以这种方式调用assert-methods的能力。

从junit版本4开始,框架使用Annotations来标记testing。 所以你不再需要扩展TestCase。 但是这意味着assert方法不可用。 但是你可以静态导入新的Assert类。 这就是为什么新类中的所有断言方法都是静态方法的原因。 所以你可以这样导入它:

 import static org.junit.Assert.*; 

在这个静态导入之后,你可以使用这个没有前缀的方法。

在重新devise时,他们也转向了新的org.junit软件包,它更好地遵循了软件包命名的一般惯例。

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

最好select最新版本,特别是在运行JDK5及更高版本时注释支持。

实际上有一个function上的变化: org.junit.Assert会抱怨,如果你使用双参数assertEquals() floatdouble ,而junit.framework.Assert会静静地autobox它。

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

我做了一个粗略的源代码比较,没有发生严重的变化。

很多评论都是在org.junit.Assert中添加的,一些重构也完成了。

唯一的变化就是与数组的比较。 有一些代码清理,但(imho) 没有function的变化