`

junit4学习

阅读更多

   在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。最主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分功能就有了。还有一句话也非常地重要“import static org.junit.Assert.*;”,我们在测试的时候使用的一系列assertEquals方法就来自这个包。大家注意一下,这是一个静态包含(static),是JDK5中新增添的一个功能。也就是说,assertEqualsAssert类中的一系列的静态方法,一般的使用方式是Assert. assertEquals(),但是使用了静态包含后,前面的类名就可以省略了,使用起来更加的方便。

   

大家注意到,我们的测试类是一个独立的类,没有任何父类。测试类的名字也可以任意命名,没有任何局限性。所以我们不能通过类的声明来判断它是不是一个测试类,它与普通类的区别在于它内部的方法的声明,我们接着会讲到。

你要测试哪个类,那么你首先就要创建一个该类的对象。正如上一篇文章中的代码:

private static Calculator calculator = new Calculator();

 

为了测试Calculator类,我们必须创建一个calculator

 

   

    在测试类中,并不是每一个方法都是用于测试的,你必须使用“标注”来明确表明哪些是测试方法。“标注”也是JDK5的一个新特性,用在此处非常恰当。我们可以看到,在某些方法的前有@Before@Test@Ignore等字样,这些就是标注,以一个“@”作为开头。这些标注都是JUnit4自定义的,熟练掌握这些标注的含义非常重要。

 

 

首先,你要在方法的前面使用@Test标注,以表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了。比如:

    @Test

    
public void testAdd() ...{

          calculator.add(2);

          calculator.add(3);

          assertEquals(5, calculator.getResult());

    }

我们想测试一下“加法”功能时候正确,就在测试方法中调用几次add函数,初始值为0,先加2,再加3,我们期待的结果应该是5。如果最终实际结果也是5,则说明add方法是正确的,反之说明它是错的。assertEquals(5, calculator.getResult());就是来判断期待结果和实际结果是否相等,第一个参数填写期待结果,第二个参数填写实际结果,也就是通过计算得到的结果。这样写好之后,JUnit会自动进行测试并把测试结果反馈给用户。

 

 

如果你在写程序前做了很好的规划,那么哪些方法是什么功能都应该实现定下来。因此,即使该方法尚未完成,他的具体功能也是确定的,这也就意味着你可以为他编写测试用例。但是,如果你已经把该方法的测试用例写完,但该方法尚未完成,那么测试的时候一定是“失败”。这种失败和真正的失败是有区别的,因此JUnit提供了一种方法来区别他们,那就是在这种测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

 

 

Fixture的含义就是“在某些阶段必然被调用的代码”。比如我们上面的测试,由于只声明了一个Calculator对象,他的初始值是0,但是测试完加法操作后,他的值就不是0了;接下来测试减法操作,就必然要考虑上次加法操作的结果。这绝对是一个很糟糕的设计!我们非常希望每一个测试都是独立的,相互之间没有任何耦合度。因此,我们就很有必要在执行每一个测试之前,对Calculator对象进行一个“复原”操作,以消除其他测试造成的影响。因此,“在任何一个测试执行之前必须执行的代码”就是一个Fixture,我们用@Before来标注它,如前面例子所示:

      @Before

      
public void setUp() throws Exception ...{

           calculator.clear();

      }

这里不在需要@Test标注,因为这不是一个test,而是一个Fixture。同理,如果“在任何测试执行之后需要进行的收尾工作”也是一个Fixture,使用@After来标注。由于本例比较简单,没有用到此功能。

        JUnit4的一些基本知识就介绍到此,还有一些更灵活的用法放在本系列的高级篇中给大家介绍!

 

 

 

分享到:
评论

相关推荐

    junit4学习文档

    junit4学习文档,有实例,非常详细,不懂的可以参考

    Junit4学习教程.doc

    Junit4学习教程

    JUnit4学习方法

    这是快捷的学习方法,如果你有兴趣而又是新手的,不妨参考这份文档吧!对你的提高不少哦

    JUnit4学习笔记

    JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也...

    Junit4学习笔记—入门篇.pdf

    以一个简单的DEMO介绍如何在Eclipse下使用JUnit4。供初次接触JUnit的同学学习

    junit学习文档

    junit 3,junit 4学习

    junit 4 资料

    它大大简化了开发人员执行单元测试的难度,特别是 JUnit 4 使用 Java 5 中的注解(annotation)使测试变得更加简单。 在单元测试前首先规划单元测试代码应放在什么地方。把它和被测试代码混在一起,这显然会照成混乱...

    JUnit测试PPT

    JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。JUnit测试资料。

    junit 入门培训ppt

    我以前写的一个junit入门的培训ppt,传了大家参考一下

    junit4 快速入门

    junit4 快速入门 比较简单易学,欢迎前来学习

    junit4 单元测试源码

    此文件包含源代码(简单加减乘除),测试源码(junit4框架下的单元测试源码),入门级学习材料。Eclipse开发环境下

    JUnit4的实例代码

    JUnit4的实例代码 JUnit4是新的test模式,欢迎大家一起来学习

    JUnit3.X和4.X学习记录及用例

    JUnit学习笔记及练习用例,主要分为JUnit3.8.2和JUnit4.8.1两个版本。

    Junit学习文档

    本文档和网络上的差不多,但加了一个自己写的示例,和一些心得,对于只要使用junit的人来说(主要是junit4) 本文档已经足够了,这个文档也是我对我们公司整个开发团队junit的培训文档。传上来给大家参考参考,有些...

    JUnit4培训

    这是一份关于JUnit4培训的详细资料,大家可以在这里很好的学习JUnit4。

    单元测试JUnit4和DbUnit

    单元测试入门学习,和dbunit结合开发

    junit4基础教程

    junit4基础教程合集,适合初学者学习,简单明了,易于学习,希望大家能认真阅读

    学习JUnit4过程中的总结

    NULL 博文链接:https://hucj.iteye.com/blog/2190715

    JUnit4.5和官方文档

    JUnit4.5包和一些相关的文档,如API,是学习JUnit的必备资料。

    JUnit4功能介绍1

    JUnit4功能介绍1

Global site tag (gtag.js) - Google Analytics