很多小伙伴在学习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
则是断言结果。
所以大部分情况下我们可以把单元测试的代码分为三块:
- 第一块代码负责测试前的数据处理,比如输入数据等。
- 第二块代码负责调用相关的功能模块进行测试。
- 第三块代码负责将测试的结果与我们期待的结果进行比对,从而得出测试结果(通过或者失败)。
代码实战
以一个简单的计算器类为例,以下是这个计算器类的方法:
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单元测试怎么写的全部内容了,各位读者是否满意呢?