JUnit使用简介

JUnit使用简介java


      Unit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma创建,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它本身的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit做为单元测试的工具。
      JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,由于程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就能够用Junit进行自动测试了。
      接下来介绍eclipse下JUnit的使用。由于目前新版本的JDK和eclipse都会自带JUnit4的包和JUnit测试的功能,因此并不须要去安装,固然若是版本比较老,没有JUnit功能,则须要另外安装,能够参见http://blog.csdn.net/oathevil/article/details/7524760.

1、首先建立一个待测试的项目程序员

     待测项目calculate.java以下图所示: 框架

              

     该项目是一个简易的计算功能,实现了两个整数的加减乘除功能。eclipse

2、创建JUnit项目函数

     按照如下图示的步骤建立JUnit Test Case:工具

              

              

     勾选上红框里的setUpBeforeClass()、tearDownAfterClass()、setUp()和tearDown(),会自动生成annotation及相应的方法,如图为点击“finish”以后生成的TestCalculate.jave。单元测试

               

其中annotation,@BeforeClass、@AfterClass、@Before和@After的使用方法以下表所示,这四个annotation加上@Test是JUnit最经常使用的annotation:测试

@BeforeClass and @AfterClass @Before and @After
在一个类中只能够出现一次

在一个类中能够出现屡次,便可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不肯定spa

方法名不作限制 方法名不作限制
在类中只运行一次 在每一个测试方法以前或者以后都会运行一次

@BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
@AfterClass 父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法以后执行.net

@Before父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
 @After父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法以后执行
必须声明为public static 必须声明为public 而且非static
全部标识为@AfterClass的方法都必定会被执行,即便在标识为@BeforeClass的方法抛出异常的的状况下也同样会。 全部标识为@After 的方法都必定会被执行,即便在标识为 @Before 或者 @Test 的方法抛出异常的的状况下也同样会。

 JUnit中还有不少其余的annotation,关于这些annotation的说明和使用方法以下表:

JUnit4使用Java5中的注解(annotation),如下是JUnit4经常使用的几个annotation:
 @Before:初始化方法 对于每个测试方法都要执行一次(注意与BeforeClass区别,后者是对于全部方法执行一次)
 @After:释放资源 对于每个测试方法都要执行一次(注意与AfterClass区别,后者是对于全部方法执行一次)
 @Test:测试方法,在这里能够测试指望异常和超时时间
 @Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
 @Ignore:忽略的测试方法
 @BeforeClass:针对全部测试,只执行一次,且必须为static void
 @AfterClass:针对全部测试,只执行一次,且必须为static void
 一个JUnit4的单元测试用例执行顺序为:
 @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
 每个测试方法的调用顺序为:
 @Before -> @Test -> @After; 
摘自其余博客。(因为找不到网址了,之后看到再补)

3、JUnit的使用

JUnit为咱们提供了一些辅助函数,他们用来帮助咱们肯定被测试的方法是否按照预期的效果正常工做,一般,把这些辅助函数称为断言。

经常使用的Assert(断言):一、assertEquals(a, b) Asserts that two primitive values are equal.

                                    测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具备equal方法)

                               二、assertFalse(a) Asserts that a condition (a) is false.

                                    测试a是否为false(假),a是一个Boolean数值。

                               三、assertTrue(a) Asserts that a condition is true.

                                    测试a是否为true(真),a是一个Boolean数值

                               四、assertNotNull(a) Asserts that an object isn't null.

                                    测试a是否非空,a是一个对象或者null。

                               五、assertNull(a) Asserts that an object is null.

                                    测试a是否为null,a是一个对象或者null。

                               六、assertNotSame(a, b) Asserts that two objects do not refer to the same object.

                                    测试a和b是否没有都引用同一个对象。

                               七、assertSame(a, b) Asserts that two objects refer to the same object.

                                    测试a和b是否都引用同一个对象。

以下图是使用断言而且运行测试的截图:

               

如图,代码中红框就是使用了断言,检测两个数相加的结果与7比较(这里须要注意下,以前待测程序使用了两个浮点数,然而rassertEquals(double,double)方法已过期,测试出现问题,故将程序改成了两个整数的加减乘除)。结果图片左边的框报告出测试未经过,到此为止测试结束。

测试程序中能够有多个@Test,在JUnit4.11后可使用 @FixMethodOrder 注解改变每一个测试的顺序。

目前当程序中有多个@before和@after注解尚未弄明白,若有大神了解,请指导。

有了JUnit,单元测试和回归测试变得好容易,因此常用JUnit对于中大型项目来讲,有很大的益处

2015-05-25 22:34:18

---------------------------------------------------

人生并不像火车要经过每一个站似的通过每个生活阶段。

     人生老是直向前行走,从不留下什么。 

                                                    —— 刘易斯

相关文章
相关标签/搜索