Junit单元测试

本文最后更新于:3 years ago

简介

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。

好处

  1. 可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。
  2. 启动后,自动化测试,并判断执行结果, 不需要人为的干预。
  3. 只需要查看最后结果,就知道整个项目的方法接口是否通畅。
  4. 每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。
  5. 添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持。

测试分类

  1. 黑盒测试:不需要写代码,给输入的只,看程序是否能够输出期望的值。
  2. 白盒测试:需要写代码的。关注程序具体的执行流程。

这里我们所说的Junit就是白盒测试。

Junit使用

定义测试类

定义一个测试类(测试用例)
建议:

  • 测试类名:被测试的类名Test CalulatorTest
  • 包名:xxx.xxx.xx.test com.fxhstudy.test
  • 定义测试方法

    定义测试的方法:可以独立运行
    建议:

  • 方法名:test测试的方法名 testAdd()
  • 返回值:void
  • 参数列表:空参
  • 给方法加@Test

    当我们加入@Test注解时,会报错,直接Alt+Enter,会自动给你添加Junit测试类包

    判定结果

  • 红色:失败
  • 绿色:成功
  • 一般我们会使用断言操作来处理结果

  • Assert.assertEquals(期望的结果,运算的结果);

    如何操作

    这里我在junit文件夹下创建了Calculator,其中写了addsub测试方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package com.fxhstudy.junit;

    /**
    * 计算器类
    */

    public class Calculator {

    /**
    * 加法
    * @param a
    * @param b
    * @return
    */

    public int add(int a, int b){
    return a + b;
    }

    public int sub(int a, int b){
    return a - b;
    }

    }

    在test文件夹下面创建了CalculatorTest测试类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package com.fxhstudy.test;

    import com.fxhstudy.junit.Calculator;
    import org.junit.Test;

    public class CalculatorTest {

    /**
    * 测试add方法
    */

    @Test
    public void test(){
    // System.out.println("test被执行了");
    //1. 创建计算机对象
    Calculator c = new Calculator();
    //2. 调用add方法
    int result = c.add(1, 2);
    }

    }


    如图则表示我们的没有异常,注意,没有异常是代表程序在系统运行中是没有问题,并不表示你的代码和你所预期的一样。
    如何想测试和你所预期是否一致,我们需要用到断言,下面会介绍断言。

    接着,我们将Calculator中的测试方法添加异常

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package com.fxhstudy.junit;

    /**
    * 计算器类
    */

    public class Calculator {

    /**
    * 加法
    * @param a
    * @param b
    * @return
    */

    public int add(int a, int b){
    int i = 3 / 0; //这里会报异常
    return a + b;
    }

    public int sub(int a, int b){
    return a - b;
    }

    }

    再用测试类测试时,会出现这样的错误


    这里就是因为测试的方法出现了错误异常,但是你在写程序时,编译器是不会爆红的。

    接着我们使用断言操作来处理结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package com.fxhstudy.test;

    import com.fxhstudy.junit.Calculator;
    import org.junit.Assert;
    import org.junit.Test;

    public class CalculatorTest {

    /**
    * 测试add方法
    */

    @Test
    public void test(){
    // System.out.println("test被执行了");
    //1. 创建计算机对象
    Calculator c = new Calculator();
    //2. 调用add方法
    int result = c.add(1, 2);

    //3. 断言 我断言这个结果是3
    Assert.assertEquals(3, result);
    }

    }

    测试成功,没有异常


    接着我们再将断言结果改为-1

    1
    2
    //3. 断言 我断言这个结果是-1
    Assert.assertEquals(-1, result);

    此时出现了异常


    以上就是关于Junit的一些基本测试方法。