JUnit4学习

junit3的要求

1.单元测试类必须继承自TestCase

2.要测试的方法必须以test开头

junit4无需做上述操作,他引入了一系列注解代替

1. @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次。 相当于之前的setUp

2. @After:使用了该元数据的方法在每个测试方法执行之后要执行一次。相当于之前的setDown

@Before,@After标识的方法只能各有一个。

3.@Test(expected=*.class):捕获异常,expected属性的值是一个异常的类型

4.@Test(timeout=xxx):该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间内没有运行完,则测试失败,一般用于死循环,或是嵌套循环

5.@ignore:如果测试的方法还没有实现,或者测试的方法已经过时,或者不想测试该方法,可以使用该标签来标识测试方法。测试的时候会显示该方法被忽略,不会报错

以下为实例,先创建一个需要测试的方法

public class Calculator ...{

    private static int result; // 静态变量,用于存储运行结果

    public void add(int n) ...{

        result = result + n;

    }

    public void substract(int n) ...{

        result = result - 1;  //Bug: 正确的应该是 result =result-n

    }

    public void multiply(int n) ...{

    }         // 此方法尚未写好

    public void divide(int n) ...{

        result = result / n;

    }

    public void square(int n) ...{

        result = n * n;

    }

    public void squareRoot(int n) ...{

        for (; ;) ;            //Bug : 死循环

    }

    public void clear() ...{     // 将结果清零

        result = 0;

    }

    public int getResult() ...{

        return result;

    }

}

新建一个junit text case

import static org.junit.Assert.*;

import org.junit.Before;

import org.junit.Ignore;

import org.junit.Test;

 

public class CalculatorTest {

   //实例化需要测试的类,创建Calculator对象

    private static Calculator calculator = new Calculator();

   

    @Before

    public void setUp() throws Exception {

        calculator.clear();

    }

 

    @Test

//使用注解的方法,可以取任何名字,但是有要求,1.返回类型必须为void;2.无参数

    public void testAdd() {

        calculator.add(2);

        calculator.add(3);

//因为Assert里面的方法都是静态(static)方法,所以可以忽略前面的类名

        assertEquals(5, calculator.getResult());

    }

 

    @Test

    public void testSubstract() {

        calculator.add(10);

        calculator.substract(2);

        assertEquals(8, calculator.getResult());

    }

 

    @Ignore("Multiply() Not yet implemented")

    @Test

    public void testMultiply() {

    }

 

    @Test

    public void testDivide() {

        calculator.add(8);

        calculator.divide(2);

        assertEquals(4, calculator.getResult());

    }

}

 

posted @ 2013-01-04 18:06  helenjgao  阅读(194)  评论(0)    收藏  举报