2个JUnit Assert类之间的差异
JUnit框架包含2个Assert
类(很明显,在不同的包中),每个方法看起来都非常相似。 任何人都可以解释为什么这是?
我所指的类是: junit.framework.Assert
和org.junit.Assert
。
旧的方法(JUnit 3)是通过扩展junit.framework.TestCase
来标记测试类。 继承的junit.framework.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
会默默地autobox它。