java单元测试(JUnit)

半世苍凉 提交于 2019-12-05 23:52:35

  单元测试是很重要的一个步骤。写代码的都应该会这个技能,自己写的代码自己测!

  本文说的是java的单元测试,用的是JUnit通过注解的方式来识别测试方法


JUnit目前支持的注解有:

 

 

下面基于IDEA介绍JUnit的基本应用

1.首先先新建一个java项目,我们编写一个Calculator类,做一个简单的计算机功能,里面有加减乘除的方法。然后进行单元测试:

                             

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

2.再新建一个测试的类,这里需要引入JUnit的jar包,放心,idea直接会帮你引的。无非就是Alt+Enter的事

 

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

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

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

    @Before
    public void setUp() throws Exception {
        cal.clear();//清空值
    }

    @Test
    public void testAdd() {
        cal.add(10);
        cal.add(1);
        assertEquals(11,cal.getResult());//正确
    }

    @Test
    public void testSubstract() {
        cal.add(3);
        cal.substract(3);
        assertEquals(0, cal.getResult());//错误在于方法上
    }
    @Ignore("Multiply() Not yet implemented")
    @Test
    public void testMultiply() {
        fail("Not yet implemented");
    }

    @Test(expected = ArithmeticException.class)
    public void divideByZero(){
        cal.divide(0);
    }
    @Test
    public void testDivide() {
        cal.add(5);
        cal.divide(1);
        assertEquals(5,cal.getResult());//正确
    }
    @Test(timeout = 1000)
    public void testSquareRoot() {
        cal.squareRoot(4);
        assertEquals(2,cal.getResult());
    }
}
View Code

 

 

我们来静静分析一下代码:

assertEquals(a,b); //a是期望值,a 和 b会做一个对比,不一样的话会出现报错

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!