Junit简单示例

2019-06-13  本文已影响0人  DCMeng

编写类文件Calculator

package com.strong.logisticscloud.limarchetype.service;

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

测试类文件CalculatorTest

package com.strong.logisticscloud.limarchetype.service;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

public class CalculatorTest {
    private static Calculator calculator = new Calculator();

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

    @Test(timeout = 1000)
    public void testAdd() {
        calculator.add(3);
        calculator.add(4);
        assertEquals(7, calculator.getResult());
    }

    @Test(timeout = 1000)
    public void testSubstract() {
        calculator.add(8);
        calculator.substract(3);
        assertEquals(5, calculator.getResult());

    }
    @Ignore
    @Test(timeout = 1000)
    public void testMultiply() {
        fail("Not yet implemented");
    }

    @Test(timeout = 1000)
    public void testDivide() {
        calculator.add(8);
        calculator.divide(2);
        assertEquals(4, calculator.getResult());
    }

    @Test(timeout = 1000)
    public void squareRoot() {
        calculator.squareRoot(4);
        assertEquals(2, calculator.getResult());
    }

    @Test(expected = Exception.class)
    public void divideByZero() {
        calculator.divide(0);
    }

    @RunWith(Parameterized.class)
    public static class SquareTest {
        private static Calculator calculator = new Calculator();
        private int param;
        private int result;

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

        // 构造函数,对变量进行初始化
        public SquareTest(int param, int result) {
            this.param = param;
            this.result = result;
        }

        @Test(timeout = 1000)
        public void square() {
            calculator.square(param);
            assertEquals(result, calculator.getResult());
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读