JUnit框架包含2个Assert类(显然是在不同的包中),每个类上的方法看起来非常相似。有人能解释一下这是为什么吗?
我引用的类是:junit.framework.Assert和org.junit.Assert。
JUnit框架包含2个Assert类(显然是在不同的包中),每个类上的方法看起来非常相似。有人能解释一下这是为什么吗?
我引用的类是:junit.framework.Assert和org.junit.Assert。
当前回答
在Android Studio中(在IntelliJ中也是如此),你可以全局地从自动导入提议中排除junit.framework。
您可以在IDE或Project之间设置范围。如果你没有使用JUnit 3的项目,你可以安全地使用IDE作用域。
设置位置:
首选项->编辑器->通用->自动导入
其他回答
实际上有一个功能上的改变:如果你使用带有float或double的双参数assertEquals(), org.junit.Assert会报错,而junit.framework.Assert会默默地自动装箱。
我相信他们正在从junit.framework重构到org。维护junit和junit.framework. assert是为了向后兼容。
我做了一个粗略的源代码比较,没有严重的变化。在org.junit.Assert中添加了许多注释,并完成了一些重构。唯一的变化是与数组的比较。有一些代码清理,但(恕我直言)没有功能上的变化。
(JUnit 3的)旧方法是通过扩展JUnit .framework. testcase来标记测试类。它继承了junit.framework.Assert本身,并且您的测试类获得了以这种方式调用assert方法的能力。
从JUnit的第4版开始,框架使用注解来标记测试。因此您不再需要扩展TestCase。但这意味着assert方法不可用。但是您可以对新的Assert类进行静态导入。这就是为什么新类中的所有assert方法都是静态方法。所以你可以这样导入它:
import static org.junit.Assert.*;
在此静态导入之后,您可以不带前缀地使用此方法。
在重新设计时,他们也搬到了新的包装组织。它更好地遵循包命名的常规约定。
JUnit 3。X: junit.framework.Assert
JUnit 4。X: org.junit.Assert
最好使用最新的版本,特别是在运行带有注释支持的JDK5或更高版本时。