首页 文章

2个JUnit Assert类之间的差异

提问于
浏览
246

JUnit框架包含2个 Assert 类(显然在不同的包中),并且每个类的方法看起来非常相似 . 任何人都可以解释为什么会这样吗?

我所指的类是:junit.framework.Assertorg.junit.Assert .

5 回答

  • 232

    旧方法(JUnit 3)是通过扩展 junit.framework.TestCase 来标记测试类 . 这继承了 junit.framework.Assert 本身,你的测试类获得了以这种方式调用assert方法的能力 .

    从JUnit的第4版开始,该框架使用 Annotations 进行标记测试 . 所以你不再需要扩展 TestCase . 但这意味着,断言方法不可用 . 但是你可以静态导入新的 Assert 类 . 这就是为什么新类中的所有断言方法都是静态方法的原因 . 所以你可以这样导入它:

    import static org.junit.Assert.*;
    

    在此静态导入之后,您可以使用此方法而不使用前缀 .

    在重新设计时,他们也转移到新包 org.junit ,它更符合包命名的常规约定 .

  • 18

    JUnit 3.X: junit.framework.Assert

    JUnit 4.X: org.junit.Assert

    更喜欢最新版本,特别是在运行带有注释支持的JDK5及更高版本时 .

  • 5

    实际上有一个功能变化: org.junit.Assert 会抱怨如果你使用双参数 assertEquals()floatdouble ,而 junit.framework.Assert 将默默地自动进行运动 .

  • 72

    我相信它们正在从 junit.framework 重构为 org.junit ,并且为了向后兼容而维护 junit.framework.Assert .

  • 3

    我做了粗略的源代码比较,并没有发生严重的变化 . 在 org.junit.Assert 中添加了很多注释,并且完成了一些重构 . 唯一的变化是与 Arrays 的比较 . 有一些代码清理,但有(imho) no functional change .

相关问题