Junit基础操作
- JUnit是专⻔做单元测试的组件。
- 在实际开发中,单元测试⼀般是由我们Java程序员来完成的。
- 我们要对我们⾃⼰写的每⼀个业务⽅法负责任,要保证每个业务⽅法在进⾏测试的时候都能通过。
- 测试的过程中涉及到两个概念:
- 期望值
- 实际值
- 期望值和实际值相同表示测试通过,期望值和实际值不同则单元测试执⾏时会报错。
- 使⽤JUnit步骤:
- 第⼀步:在pom引⼊依赖
<!-- junit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
- 第⼆步:编写单元测试类【测试⽤例】,测试⽤例中每⼀个测试⽅法上使⽤@Test注解进⾏标注
- 测试用例的名字以及每个测试方法的定义都是有规范的:
- 测试用例的名字:XxxTest
- 测试方法声明格式:public void test业务方法名(){}
// 测试⽤例
public class CarMapperTest{
// 测试⽅法
@Test
public void testInsert(){}
@Test
public void testUpdate(){}
}
- 第三步:可以在类上执⾏,也可以在⽅法上执⾏
- 在类上执⾏时,该类中所有的测试⽅法都会执⾏。
- 在⽅法上执⾏时,只执⾏当前的测试⽅法。
package com.powernode.junit.service;
import org.junit.Assert;
import org.junit.Test;
/**
* 单元测试类
* @author 动力节点
* @version 1.0
* @since 1.0
*/
public class MathServiceTest { // 名字规范:你要测试的类名+Test
// 单元测试方法写多少个。
// 一般是一个业务方法对应一个测试方式。
// 测试方法的规范: public void testXxxx(){}
// 测试方法的方法名:以test开始。假设测试的方法是sum,这个测试方法名:testSum
// @Test注解非常重要,被这个注解标注的方法就是一个单元测试方法。
@Test
public void testSum(){
// 单元测试中有两个重要的概念:
// 一个是:实际值(被测试的业务方法的真正执行结果)
// 一个是:期望值(执行了这个业务方法之后,你期望的执行结果是多少)
MathService mathService = new MathService();
// 获取实际值
int actual = mathService.sum(1, 2);
// 期望值
//int expected = 3;
int expected = 30;
// 加断言进行测试
Assert.assertEquals(expected, actual);
}
@Test
public void testSub(){
MathService mathService = new MathService();
// 实际值
int actual = mathService.sub(10, 5);
// 期望值
int expected = 5;
// 添加断言机制
Assert.assertEquals(expected, actual);
}
}
添加了断言机制之后,若期望值与实际值不同则会抛出异常。
![image.png](https://img-blog.csdnimg.cn/img_convert/6b8850a1590fdbdfac496f720190dcbc.png#clientId=uaf58b254-f545-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=635&id=ufb8b0bc8&margin=[object Object]&name=image.png&originHeight=635&originWidth=710&originalType=binary&ratio=1&rotation=0&showTitle=false&size=66631&status=done&style=none&taskId=u2a65c603-c54d-49e1-b91f-63b1cb1b0f1&title=&width=710)
知识扩展:断言Assert
断言的概念
- 断言实际上是一种测试机制,它可以规定某个参数或者属性必须要满足某个条件,否则会抛出一个异常,并且程序会中止。
断言的一些特点
- 断言只用于开发测试阶段确定程序的内部错误
- 断言默认是禁用的,需要手动开启。禁用断言的情况下,类加载器会跳过断言代码
- 断言检测失败的时候,会抛出AssertionError异常,程序中止