JUnit4学习

Posted Kooing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUnit4学习相关的知识,希望对你有一定的参考价值。

参考:http://www.cnblogs.com/yangxia-test/p/3996120.html

JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能

先说说他的常见注解

@Before(每个测试方法执行之前都要执行一次,比如有些数据需要重新赋值

@After(每个测试方法执行后都执行一次,比如有些数据需要重新复制

@BeforeClass(所有方法执行前执行

@AfterClass(所有方法执行后执行

@Test(timeout = xxx)看当前测试方法是否在一定时间内完成(比如看是否死循环

@Test(expected=Exception.class)测试方法中是否有抛出了这个异常

@Ignore(历史原因或者没有设置好,就先不测试这个方法,加载@Test上面,不代替@Test

下面说说使用方法

准备一个测试用的类(里面有错误的方法

package andycpp;

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;
    }
}

导入JUnit4包

右键项目——》构建路径——》add Library——》JUnit

在相对应的java文件右键,new——》JUnit Test Case,编写各个方法

    private static Calculator calculator = new Calculator();

    @Before
    public void setUp() throws Exception {
        calculator.clear();
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test(timeout = 1000)
    public void testAdd() {
        calculator.add(2);
        calculator.add(3);
    }

    @Test
    public void testSubstract() {
        calculator.add(10);
        calculator.substract(2);
        assertEquals(8, calculator.getResult());
    }

    @Ignore("Multiply() Not yet implemented")
    @Test
    public void testMultiply() {
    }

    @Test(expected = ArithmeticException.class)
    public void testDivide() {
        calculator.add(8);
        calculator.divide(0);
        assertEquals(4, calculator.getResult());
    }

    @Test(timeout = 1000)
    public void testSquareRoot() {
        calculator.squareRoot(1);
    }

右键测试类,run as --》JUnit可以看到效果

下面说带有多个参数一起解决

0,类前面加注解@RunWith(Parameterized.class)

1,设置参数

2,@Parameters方法

3,重写构造方法

4,@Test方法

    private static Calculator calculator = new Calculator();

    private int param;
    private int result;

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Parameters
    public static Collection data() {
        return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 } });
    }

    public SquareTest(int param, int result) {
        this.param = param;
        this.result = result;
    }

    @Test
    public void testSquare() {
        calculator.square(param);
        assertEquals(result, calculator.getResult());
        System.out.println("result=" + result);
    }

效果图

 

 

 我们打包想一起测试的时候,写个类包他们两个整合起来

代码内容

@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, SquareTest.class })
public class All {
}

以上是关于JUnit4学习的主要内容,如果未能解决你的问题,请参考以下文章

junit4单元测试--web项目中模拟登录会话,做全流程测试

JUnit4 学习感悟

如何将JUnit 4测试添加到JUnit 3测试套件中

JUnit4 学习笔记

Junit4学习

JUnit4 学习笔记