2个JUnit Assert类之间的差异
JUnit框架包含2个Assert
类(很明显,在不同的包中),每个方法看起来都非常相似。 有人可以解释为什么这是?
我所指的类是: junit.framework.Assert
和org.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()
float
或double
,而junit.framework.Assert
会静静地autobox它。
我相信他们正在从junit.framework
重构到org.junit
和junit.framework.Assert
是为了向后兼容而维护的。
我做了一个粗略的源代码比较,没有发生严重的变化。
很多评论都是在org.junit.Assert
中添加的,一些重构也完成了。
唯一的变化就是与数组的比较。 有一些代码清理,但(imho) 没有function的变化 。