JUnit框架包含2个Assert
类(显然位于不同的包中),每个类中的方法看起来非常相似。有人能解释一下为什么会这样吗?
JUnit框架包含2个Assert
类(显然位于不同的包中),每个类中的方法看起来非常相似。有人能解释一下为什么会这样吗?
旧的JUnit 3方法是通过扩展 junit.framework.TestCase
来标记测试类。这样继承了 junit.framework.Assert
,你的测试类就可以通过这种方式调用 assert 方法。
JUnit 4 版本以后,框架使用 注解
来标记测试。因此,你不再需要扩展 TestCase
。但这也意味着 assert 方法不再可用。不过你可以静态导入新的 Assert
类,所有新类中的 assert 方法都是静态方法。所以你可以这样导入它:
import static org.junit.Assert.*;
在进行静态导入之后,您可以直接使用这些方法而无需添加前缀。
在重新设计中,他们还将其移动到新包org.junit
,该包遵循更好的包命名规范。
JUnit 3.X: junit.framework.Assert
JUnit 4.X: org.junit.Assert
如果您使用JDK5及以上版本并支持注解,请优先选择最新的JUnit版本。
实际上有一个功能性的改变: org.junit.Assert
会抱怨如果你使用两个参数的assertEquals()
,并且带有float
或double
,而junit.framework.Assert
则会自动装箱。
我相信他们正在从junit.framework
重构到org.junit
,而junit.framework.Assert
保持向后兼容性。
org.junit.Assert
中添加了很多注释,并进行了一些重构。唯一的变化是与Arrays
的比较。有一些代码清理,但(在我看来)没有功能性的改变。
编辑器->常规->自动导入->从导入和补全中排除
中从静态导入下拉菜单中排除junit.framework.*
。 - jordanpg