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
or 的两个参数会抱怨double
,同时junit.framework.Assert
会默默地自动装箱.
我相信他们正在重构junit.framework
,org.junit
并且junit.framework.Assert
为了向后兼容而维护.