码迷,mamicode.com
首页 > 其他好文 > 详细

单元测试JUnit 4(二)——keeps the bar green to keeps the code clean

时间:2017-03-23 13:53:00      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:null   对象   ice   assert   bsp   java   6.2   als   2.3   

1.FailureError

技术分享

   Failure是指测试失败  Error是指测试程序本身出错  (int a=10/0)

2.JUnit常用注解

2.1 @RunWith: 可以更改测试运行器(继承org.junit.runner.Runner)
2.2 @Test: 将一个普通的方法修饰成为一个测试方法
  Test有两个参数:
     expected 表示预期可能产生的异常,如果匹配则不报错
     timeout  表示超时时间,如果超过这个时间没有完成,则抛出TestTimedOutException
 @Test(expected=ArithmeticException.class,timeout=2000)//第一个参数是异常类的类类型,第二个参数是毫秒数

  2.3 全局的初始化和销毁:@BeforeClass和@AfterClass

@BeforClass: 他会在所有的方法运行前被执行,static修饰,用来进行一些开销昂贵的初始化操作,比如连接数据库。
@AfterClass: 他会在所有的方法运行结束后被执行,static修饰
注意这两个修饰符修饰的方法必须是public static void的,并且没有参数(no-arg)。
Note:
即便@BeforeClass修饰的方法抛出异常了,@AfterClass修饰的方法也会照常执行。
基类的@BeforeClass方法会在子类的@BeforeClass方法之前进行;而基类的@AfterClass方法会在子类的@AfterClass方法之后进行。

2.4 这两个方法会在每一个测试用例的前后被调用,所以可以用来创建对象,对于每个测试用例来说都是一个新的对象。
@Befor: 会在每一个测试方法被运行前执行一次
@After: 会在每一个测试方法运行后被执行一次

2.5 @Ignore注解可用于修饰测试类与测试方法,被@Ignore所修饰的方法或类中的测试(@Test修饰的测试)将不会被执行。

  @Ignore中可以加上参数值,说明忽略测试的原因。

2.6 示例(以数值计算测试为例)

      2.6.1 Calculator.java

package com.zang.junit4.test;

public class Calculator
{
    public int add(int a, int b)
    {
        return a + b;
    }

    public int subtract(int a, int b)
    {
        return a - b;
    }

    public int multiply(int a, int b)
    {
        return a * b;
    }

    public int divide(int a, int b) throws Exception
    {
        if (0 == b)
        {
            throw new Exception("除数不能为0");
        }
        return a / b;
    }
}

     2.6.2 CalculatorTest.java

package com.zang.junit4.test;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.junit.Assert.assertEquals;//静态导入

public class CalculatorTest
{
    private Calculator cal = null;
    
    @BeforeClass
    public static void globalInit()
    {
        System.out.println("global Init invoked!");
    }
    
    @AfterClass
    public static void globalDestroy()
    {
        System.out.println("global Destroy invoked!");
    }

    @Before
    public void init()//setUp()
    {

        cal = new Calculator();
        System.out.println("init --> cal: " + cal);

    }

    @After
    public void destroy()//tearDown()
    {
        System.out.println("destroy");
    }

    @Test
    public void testAdd()
    {
        System.out.println("testAdd");
        int result = cal.add(3, 5);
        assertEquals(8, result);
    }

    @Test
    public void testSubtract()
    {
        System.out.println("testSubtract");
        int result = cal.subtract(1, 6);
        assertEquals(-5, result);

    }

    @Test
    public void testMultiply()
    {
        System.out.println("testMultiply");
        int result = cal.multiply(5, 9);
        assertEquals(45, result);
    }
    

}

   2.6.3 Run As JUnit Test ——>控制台输出

技术分享

 

 3.运行多个测试

技术分享

注意:  遵守约定,比如:

a) 类放在test包中 b) 类名用XXXTest结尾  c) 方法用testMethod命名

 

 

单元测试JUnit 4(二)——keeps the bar green to keeps the code clean

标签:null   对象   ice   assert   bsp   java   6.2   als   2.3   

原文地址:http://www.cnblogs.com/zjfjava/p/6604443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!