赞
踩
百度百科:单元测试(unit testing)是指对软件中的最⼩可测试单元进⾏检查和验证的过程
最小可测试单元因人而异,有的人认为是方法,有的人认为是类,作者更偏向于方法的说法
执行单元测试的目的是检测开发者编写的⼀⼩段代码(或功能)是否正确。如果测试结果符合我们的预期,称之为测试通过,否则就是测试未通过(或者叫测试失败),最后我们根据测试结果来找错排错
Spring Boot 项目创建时会默认添加上单元测试框架 spring-boot-starter-test,这个框架主要是依赖另一个著名测试框架 JUnit 实现的,如下图所示:
我们通过查看 spring-boot-starter-test 的源码,就能看到它和 JUnit 的关系
在需要进行单元测试的类或接口里面设置
上述生成的单元测试类其中的方法中是没有内容的;其次生成的单元测试类位于test包下,如图:
// 表明当前单元测试运行在 spring boot 环境中
@SpringBootTest
class UserMapperTest {
@Test
void getUserById() {
}
}
// 表明当前单元测试运行在 spring boot 环境中 @SpringBootTest class UserMapperTest { // 如果idea是科学版,那么这里注入的注解使用 @Autowired 可能会报错 // 将 UserMapper 注入进来,对它的相关方法进行测试 @Resource private UserMapper userMapper; // 测试代码 @Test void getUserById() { UserInfo userInfo = userMapper.getUserById(1); System.out.println(userInfo); } }
开始执行
运行结果
百度百科:断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息
断言所使用的类是 Assertions
,如果断言失败,则后面的代码都不会执行
方法 | 说明 |
---|---|
assertEquals | 判断两个对象或两个基本类型是否相等 |
assertNotEquals | 判断两个对象或两个基本类型是否不相等 |
assertSame | 判断两个对象引用是否指向同一对象 |
assertNotSame | 判断两个对象引用是否指向不同对象 |
assertTrue | 判断给定的布尔值是否为true |
assertFalse | 判断给定的布尔值是否为false |
assertNull | 判断给定的对象引用是否为null |
assertNotNull | 判断给定的对象引用是否不为null |
// 测试代码
@Test
void getUserById() {
UserInfo userInfo = userMapper.getUserById(1);
// System.out.println(userInfo);
// 测试查询结果是否不为 null
Assertions.assertNotNull(userInfo);
}
执行结果:
如果方法写成 assertNull,那么结果就会报错:
很多时候,我们只是想进行测试,但是不愿意数据库中的数据也被修改,才是我们就要设置单元测试的回滚操作
核心:给测试类或测试类的方法上加上 @Transactional 注解,该注解的本意只是开启事务,并提交事务,但是加在测试类的时候,它又增加了一个功能,就是最后执行完毕之后回滚事务
代码示例:
@Test
@Transactional
void updateNameById() {
int result = userMapper.updateNameById(2, "wangwu");
Assertions.assertEquals(1, result);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。