2个JUnit Assert类之间的差异
-
08-07-2019 - |
题
JUnit框架包含2个Assert
类(显然在不同的包中),并且每个类的方法看起来非常相似。任何人都可以解释为什么会这样吗?
我所指的课程是: junit.framework.Assert
和 org.junit.Assert
。
解决方案
旧方法(JUnit 3)是通过扩展junit.framework.TestCase
来标记测试类。继承了junit.framework.Assert
本身,你的测试类获得了以这种方式调用assert方法的能力。
从JUnit的第4版开始,框架使用Annotations
标记测试。所以你不再需要扩展TestCase
。但这意味着,断言方法不可用。但是您可以对新的Assert
类进行静态导入。这就是为什么新类中的所有断言方法都是静态方法的原因。所以你可以这样导入它:
import static org.junit.Assert.*;
执行此静态导入后,您可以使用此方法而不使用前缀。
在重新设计时,他们也转移到了新的包org.junit
,它更符合包命名的常规约定。
其他提示
JUnit 3.X:junit.framework.Assert
JUnit 4.X:org.junit.Assert
首选最新版本,尤其是在运行带有注释支持的JDK5及更高版本时。
实际上有一个功能上的变化:org.junit.Assert
如果您使用assertEquals()
float
或double
,则会抱怨,而junit.framework.Assert
将默默地自动进行自动装箱。
我认为他们正在从junit.framework
重构为org.junit
,并且junit.framework.Assert
是为了向后兼容而维护的。
我做了粗略的源代码比较,并没有发生严重的变化。在org.junit.Assert
中添加了很多注释,并且完成了一些重构。唯一的变化是与Arrays
的比较。有一些代码清理,但有(imho)没有功能改变。