java单元测试怎么写?怎么使用Junit进行单元测试

猿友 2021-06-30 14:28:48 浏览数 (8435)
反馈

很多小伙伴在学习java的过程中会了解到单元测试这一概念。在java编程中,合理的利用单元测试,可以让开发更加高效。java最常见的单元测试框架是xUnit家族的Junit,今天我们就简单的介绍一下Junit的使用,顺便学习一下java单元测试怎么写吧!

Junit引入

Junit并不是java自带的包,在使用的时候要引入第三方jar包。相关​jar​包可以前往Junit官网进行下载和学习。

Junit官网:https://junit.org/junit4/

也可以使用maven进行项目管理,使用maven进行Junit包的引入(下方代码为某版本的Junit的依赖引用):

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

最后,有些IDE在创建项目的时候会自行导入Junit包(或者可以通过设置导入Junit包,比如eclipse),这些IDE在创建项目的时候会把​src​文件夹分成两个文件夹,一个为​main​,一个为​test​,这样就可以直接在test文件夹直接写Junit测试代码了。

如何写单元测试代码

单元测试代码可以简单的分成三步,分别为​Given​,​When​,​Then​。​Given​代表初始状态或者前置条件(可以简单的理解为数据输入);​When​代表行为发生,也就是进行测试动作;Then​则是断言结果。

所以大部分情况下我们可以把单元测试的代码分为三块:

  1. 第一块代码负责测试前的数据处理,比如输入数据等。
  2. 第二块代码负责调用相关的功能模块进行测试。
  3. 第三块代码负责将测试的结果与我们期待的结果进行比对,从而得出测试结果(通过或者失败)。

代码实战

以一个简单的计算器类为例,以下是这个计算器类的方法:

public class Calculator {
    public static int add(int x ,int y){
        return x+y;
    }
    public static int substract(int x, int y){
        return x-y;
    }
    public static float divide(int x,int y){
        return x/y;
    }
}

我们设计了一些简单的测试代码(代码解读详见注释):

import org.junit.Assert;
import org.junit.Test;

public class CalculatorTest {

@Test //使用test注解,注解下的方法为测试代码
public void testAdd() {
//我们要测的是一个add函数,他传入两个int参数
int x=2,y=3;//输入数据
int res = Calculator.add(x,y);//将数据传递给被测函数,然后将返回结果存在res中
Assert.assertEquals(res ,5);//使用断言判断res的值是否等于期待的值(这里期待为5)
//如果res的值等于期待的值,则测试通过,反之测试失败
}

@Test
public void testSubstract() {
//这是另一个测试代码,使用简写的方式,将第一二步合在一起
int res =Calculator.substract(5,3);
Assert.assertEquals(res ,3);
}
}

 以上代码只是用来介绍如何使用Junit,测试用例设计得比较随意。实际上测试用例设计需要考虑很多,要通过测试用例来证明目标代码的功能健全,所以对于一个简单的相加函数而言,这样的测试用例略显简单了。详细的测试用例设计小编以后会继续分享,关注W3C技术头条,学习如何编写更好的测试用例!

小结

对于初学者而言,以上简单的测试案例已经足够入门了。但实际上在测试的过程中还会遇到很多对功能的要求,比如说功能代码的执行速度是否符合要求;如何聚合测试;代码抛出异常如何跳过等等,这些都是Junit的学习内容,而对于完整的Junit学习,一篇文章是讲不完的,所以小编后续也会根据Junit的部分功能进行逐一介绍。同时也可以前往Junit教程进行学习。以上就是java单元测试怎么写的全部内容了,各位读者是否满意呢?


1 人点赞