`

JUnit 4 的一些新功能

阅读更多

包结构的变化

         在junit4中开始使用这样的包结构:org.junit.* ,而不再像以前使用这样的包结构:junit.framework.*,但是为了向后兼容,在Junit4中将会让这两种包结构并存

继承上的变化

        你的测试类再也不需要extends这个类junit.framework.TestCase了,而且不用显示的继承任何一个类,Junit通过采用JDK 5.0的annotations特性来完成了这种转变。如果想要执行一个test case,只需要在你的测试类中至少包含一个这样的annotation就可以了@Test。
        打个比方,如果你写了这样的一个类,里面只包含了@Before 和 @After这样的annotation,却没有包含任何的@Test,那么在你开始运行这个测试类的时候,你会碰到一个java的异常:java.lang.Exception: No runnable methods.

断言方法的变化

         因为在Junit 4中,测试类不再继承TestCase(在这个类里JUnit 3.8版本中定义了assertEquals()等方法),所以你需要使用一个前缀的语法就像这样:Assert.assertEquals(),或者用JDK 5.0中的静态导入,来导入Assert,之后,你就可以像之前那样使用assertEquals等等这些方法了

        另外,在Junit 4中增加了两个新的断言方法,他们用来比较两个对象数组,如果两个数组中的每个元素都是equal的,那么就认为这两个数组是equal的:
    public static void assertEquals(String message, Object[] expecteds, Object[] actuals);
    public static void assertEquals(Object[] expecteds, Object[] actuals);

         还有12个assertEquals 方法已经因为JDK 5.0中的autoboxing功能而彻底消失了。像这样assertEquals(long, long) 之前在JUnit 3.8中使用的方法,现在已经都统一改用assertEquals(Object, Object)方法。

Fixture

        Fixtures是在测试期间用来初始化(initialize)和释放(release)对象的一些方法,在 In JUnit 3.8中,需要用setUp() 方法在运行测试方法之前进行一些初始化的工作,然后在测试完成之后用tearDown() 方法来进行善后工作。这两个方法都是从父类TestCase 中override过来的,因此他们的方法声明及方法名称是固定的。在JUnit 4中我们只要使用这两个annotation:@Before 和 @After 就可以达到同样的目的了,而且我们不用再强制的让方法必须叫这两个名字了。^_^

测试方法上的变化

          在JUnit 3.8中,用来标识一个测试方法是通过它的方法签名来实现的,即方法必须以一个"test"的前缀来命名,且必须为void,而且必须没有任何参数(比如:public void testDivide()),那些不遵循这种命名规则的方法将会被简单的忽略掉,而且不会抛出任何异常来表面已经发生了错误。

        在JUnit 4中就没有命名上的限制了,只需要在测试方法的签名加上一个这样的annotation就可以了:@Test,像之前的限制:方法必须为void,而且必须没有任何参数,这些还是一样需要,只是限制改为,如果没有遵守这些限制,则会在运行的时候抛出下面的异常:
     java.lang.Exception: Method xxx should have no parameters
     java.lang.Exception: Method xxx should be void
另外,@Test支持可选的expected参数,用来声明这个测试方法可以抛出一个异常,如果在测试时没有抛出异常,或者抛出了一个其他的异常,都会认为测试是失败的。比如可以这样来声明@Test(expected = ArithmeticException.class)。

忽略一个测试方法

         如果你在测试之前知道某个方法测试一定会失败,但是,你又不想让测试失败,那么你怎么临时的让这个测试方法被忽略掉呢?在JUnit 3.8中要么将这个方法注释掉,要么就需要改变方法名称,即不使用test前缀开头来命名方法,问题是当测试的方法很多时,你可能不记得你重命名过的这个方法了。而在JUnit 4中可以通过去掉方法前面的@Test annotation来达到目的,但是上面的问题依然存在,一个终极解决方案是:在需要测试的方法前/后即@Test的前面或者后面加上@Ignore 就可以了,最后在测试报告中将会显示出有多少方法被忽略掉了,同时会显示多少方法运行成功,以及多少方法运行失败。Note:@Ignore 有一个可选的参数,可以用它来简单的记录为什么这个方法被忽略掉了。

运行测试

         在JUnit 3.8中你可以有多种运行方式:text, AWT或者Swing,但是在JUnit 4中仅使用text方式。

分享到:
评论

相关推荐

    junit4 jar包

    `junit-4.11.jar`是JUnit的主要库,包含了JUnit4.11版本的所有功能。这个版本引入了许多改进,如注解的增强支持、对Java 5和6新特性的兼容、更灵活的测试运行器以及错误处理的改进。在JUnit4中,你可以通过注解(如`...

    junit4教程(《Junit4初探》)

    JUnit4是JUnit系列的第四代产品,它引入了注解(Annotations)和断言(Assertions)等新特性,使得测试代码更加简洁易读。与JUnit3相比,JUnit4的灵活性和可扩展性得到了显著提升,使得测试驱动开发(TDD)在Java...

    Junit4完整源码

    - **org.junit.jupiter.api**:JUnit5的API,尽管在JUnit4中不直接使用,但了解其设计可以为升级到新版本做好准备。 3. **JUnit4的扩展**: - **Test Rules**:可以通过实现`org.junit.rules.TestRule`接口来创建...

    Junit4.zip

    JUnit4引入了许多新特性,如注解(Annotations)和参数化测试。注解使得测试类和方法的声明更加直观,例如`@Test`用于标记测试方法,`@Before`和`@After`分别用于在每个测试方法之前和之后执行初始化和清理操作。...

    Junit4使用方法

    JUnit4 是一个流行的 Java 单元测试框架,提供了许多功能强大且灵活的测试工具。本文将详细介绍 JUnit4 的使用方法和核心概念。 JUnit4 核心概念 JUnit4 的核心概念包括测试类、测试集和测试运行器。测试类是包含...

    Junit4 jar包

    Junit4是由Eclipse基金会维护的一个开源项目,它是JUnit系列的第四个主要版本,相比于之前的版本,Junit4引入了许多新的特性和改进。它支持注解(Annotation-based)的测试,使得编写和组织测试代码变得更加简洁。...

    JUnit4.rar(ppt讲义)

    JUnit 4提供了一些内置的断言方法,如`assertEquals`、`assertTrue`等,用于检查程序的输出是否符合预期。测试失败时,JUnit会提供有用的失败信息,帮助开发者快速定位问题。 **8. 装饰器模式与TestWatcher** `...

    junit3.8 和junit4 api

    5. **分类(Categories)**:在JUnit 4中引入,用于组织和筛选测试,但JUnit 3没有这个功能。 **JUnit 4 API** JUnit 4是一个重大的更新,引入了许多新特性和改进,使得测试更加灵活和强大: 1. **测试注解...

    最新junit4,完整压缩文件,支持注解

    JUnit4 是一个广泛使用的Java编程语言的单元测试框架,...总之,这个“最新junit4,完整压缩文件”包含了进行Java单元测试所需的一切,利用其中的注解和功能,你可以编写出高效且易于维护的测试代码,确保你的程序质量。

    在Eclipse中使用JUnit4进行单元测试

    测试方法中,JUnit4提供了一些断言方法,如`assertEquals`、`assertTrue`等,用于检查预期结果与实际结果的相符性。例如,`assertEquals(expected, actual)`用于验证两个对象或值是否相等,`assertTrue(condition)`...

    JUnit4学习方法

    JUnit4相较于之前的版本,在语法和功能上都有显著改进,使得编写测试更加直观、高效。 对于初学者来说,快速掌握JUnit4的基本用法是非常重要的。本文档旨在为新手提供一份简明扼要的学习指南,通过实际案例来展示...

    Junit4测试用例示例

    `org.junit.Assume`提供了一些静态方法,如`assumeTrue()`、`assumeFalse()`等。 总结起来,Junit4是Java开发中的强大工具,通过注解、断言和各种测试策略,能有效地保证代码的质量和稳定性。熟悉和掌握Junit4的...

    junit4资料

    相比于早期版本,JUnit4引入了多种新特性来简化测试代码的编写过程,并提高了测试的灵活性与可读性。本文将详细介绍JUnit4的关键概念以及如何高效地利用JUnit4进行单元测试。 #### 二、JUnit4的主要特点 1. **无需...

    eclipse中使用junit4

    JUnit4是JUnit框架的一个重大改进,特别是在Java5引入注解功能之后。注解(Annotation)在Java中是一种元数据,用于提供额外的信息来描述类、方法或变量的用途,类似于公共(public)、静态(static)等关键字。 在...

    junit 4测试框架培训资料

    - 注解支持:JUnit 4利用Java 5的注解功能,如`@Test`用于标记测试方法,`@Before`和`@After`用于设置测试前后的准备工作(Fixture)。 - 参数化测试:允许用不同参数运行同一个测试方法,提高测试覆盖率。 - 钩子...

    junit4入门

    JUnit 是一个用于Java编程语言的单元测试框架,而Junit4作为其第四代版本,引入了许多新特性和改进,使得测试代码更加简洁、可读性强,大大提升了测试效率。这篇教程将带你走进Junit4的世界,深入理解其核心概念和...

    Junit4使用教程详解+源码下载.rar

    JUnit4是JUnit系列的第四个主要版本,它引入了许多新特性,如注解(Annotations)、参数化测试、测试套件的改进以及更加灵活的断言机制。这些改进使得测试代码更加简洁、易于理解和维护。 二、注解在JUnit4中的应用...

Global site tag (gtag.js) - Google Analytics