Junit 单体测试

来源:互联网 发布:淘宝转让合法吗 编辑:程序博客网 时间:2024/05/18 03:15

代码测试:
白盒测试:测试代码结构和逻辑(可见代码测试):黑盒测试:测试代码功能和性能(不可见代码测试)
白盒测试局限性:1、不可能测试所有代码。2 白盒测试难度比极高。
单体测试是一种白盒测试,测试代码功能模块 – 测试代码单个功能

junit 是java 的单体测试技术
1、编写junit 在工程引用junit 类库
2、编写单体测试用例
* 创建public void 无参数的方法 、在方法前添加@Test 注解
3、每个测试方法 相当于以前编写main 函数,每个测试方法可以单独执行

在使用junit进行测试当方法非常多,每个方法输出内容到控制台,人们无法通过人工进行检查
* 自动化结果检查 — 断言 Assert
断言原理:调用方法,调用方法前,准备测试数据、测试数据运行结果 —— 比较实际结果与预期结果是否相同

  • 编写单体测试时,不要仅测试正确的数据和结果,测试不正确数据(非法数据)

代码:

package com.qddx;/* * 编写加减乘数方法 * */public class Calcultor {    public int add(int a, int b) {        return a + b;    }    public int sub(int a, int b) {        return a - b;    }    public int mul(int a, int b) {        return a * b;    }    public int div(int a, int b) {        if (b == 0) {            throw new RuntimeException("除数为零");        }        return a / b;    }}

测试代码:

package com.qddx;import org.junit.After;import org.junit.AfterClass;import org.junit.Assert;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;//@ignore 可以忽略不想执行的方法。public class CalcultorTest {    // 在每个测试方法前执行的代码    @Before    public void before() {        System.out.println("before...");    }    // 在每个测试代码后执行的代码    @After    public void after() {        System.out.println("after");    }    // 在整个测试类实例化之前只想一段代码    @BeforeClass    public static void befrClass() {        System.out.println("before....");    }    // 在整个类对象使用之后    @AfterClass    public static void afterClass() {        System.out.println("afterclass");    }    @Test    public void testAdd() {        // 方法进行测试        int a = 6;        int b = 9;        Calcultor c = new Calcultor();        int result = c.add(a, b);        System.out.println(result);        // 比较实际结果和语气结果的值        Assert.assertEquals(15, result);    }    @Test    public void testSub() {        int a = 6;        int b = 9;        Calcultor c = new Calcultor();        int result = c.sub(a, b);        System.out.println(result);        // 比较实际结果和预期结果的值 使用断言        Assert.assertEquals(-3, result);    }    @Test    public void testMul() {        int a = 6;        int b = 9;        Calcultor c = new Calcultor();        int result = c.mul(a, b);        System.out.println(result);        // 比较实际结果和语气结果的值        Assert.assertEquals(54, result);    }    @Test    public void testDiv() {        int a = 6;        int b = 2;        Calcultor c = new Calcultor();        int result = c.div(a, b);        System.out.println(result);        // 比较实际结果和语气结果的值        Assert.assertEquals(3, result);    }}
0 0