Junit单元测试简单使用
第一步:pom文件引入相关文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
第二步:创建测试类并添加@SpringBootTest注解,如果不需要注入springbean可以不加入注解(比如下文的foodRest)
第三步:编写相关测试方法并在方法上加上@Test注解,@DisplayName注解可以取一个测试别名
@SpringBootTest
@Slf4jpublic class FoodRestTest {
@Autowired
private FoodRest foodRest; @Test
@DisplayName("新增食物")
void add() {
FoodDTO foodDTO = new FoodDTO();
foodDTO.setType("面食");
foodDTO.setName("炸酱面");
Result<FoodVO> add = foodRest.add(foodDTO);
System.out.println(add.getData().toString());
System.out.println(System.currentTimeMillis());
} @Test
@DisplayName("获取所有食物")
void findAll() {
Result<List<FoodVO>> all = foodRest.findAll();
for (FoodVO datum : all.getData()) {
System.out.println(datum);
}
System.out.println(System.currentTimeMillis());
}
}
运行结果

在默认情况下,运行顺序是按照方法名的hashcode顺序执行的,先执行findAll(),再执行add(),但是有的时候我们需要按顺序执行,比如上图,却没有拿到数据,所有我们需要先执行add(),再去执行findAll()。
我们有多种方法实现:
- 按执行顺序重新给测试方法命名(不推荐)
- 设置方法执行顺序,添加@TestMethodOrder(value=“”)注解,有以下选项:
- MethodOrderer.OrderAnnotation.class(推荐),配合@Order注解使用,根据Order的优先级执行,值越小优先级越大
- MethodOrderer.MethodName.class,根据方法名称字典顺序执行
- MethodOrderer.DisplayName.class,根据别名字典顺序执行
- MethodOrderer.Random.class,随机顺序执行
- 自定义MethodOrderer接口的实现类,重写orderMethods方法
public class MyMethodOrderer implements MethodOrderer {
@Override
public void orderMethods(MethodOrdererContext methodOrdererContext) {
List<? extends MethodDescriptor> methodDescriptors = methodOrdererContext.getMethodDescriptors();
//自定义排序逻辑
System.out.println();
}
}
@SpringBootTest
@Slf4j
@TestMethodOrder(value = MethodOrderer.OrderAnnotation.class)
public class FoodRestTest {
@Autowired
private FoodRest foodRest; @Test
@Order(1)
@DisplayName("新增食物")
void add() {
FoodDTO foodDTO = new FoodDTO();
foodDTO.setType("面食");
foodDTO.setName("炸酱面");
Result<FoodVO> add = foodRest.add(foodDTO);
System.out.println(add.getData().toString());
System.out.println(System.currentTimeMillis());
} @Test
@Order(2)
@DisplayName("获取所有食物")
void findAll() {
Result<List<FoodVO>> all = foodRest.findAll();
for (FoodVO datum : all.getData()) {
System.out.println(datum);
}
System.out.println(System.currentTimeMillis());
}
}
运行结果,按照顺序执行,我们就取到对应的数据了

Junit单元测试简单使用的更多相关文章
- JUnit单元测试框架的使用
http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...
- 单元测试系列:JUnit单元测试规范
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...
- JUnit单元测试教程(翻译自Java Code Geeks)
JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...
- springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...
- 单元测试系列之三:JUnit单元测试规范
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...
- Junit 单元测试、BeanUtils、Properties类
一. Junit单元测试 1.1. Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好 ...
- Junit单元测试多线程的问题
今天下午很快完成了一个接口的监控功能,然后屁颠屁颠地用Junit开始单元测试.然后我就开始陷入崩溃的边缘... 监控结束后需要将监控结果以邮件的形式发送给运营的小伙伴维护,前面测试还是很顺利,到了开多 ...
- Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...
- Junit单元测试、反射、注解
Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用:白盒测试 * 步 ...
- 基础-Junit单元测试_反射_注解
一.Junit单元测试 1.1 测试分类: 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 白盒测试:需要写代码的.关注程序具体的执行流程. 1.2 Junit使用(白盒测试) 使用步 ...
随机推荐
- [C++]const_cast,dynamic_cast,reinterpret_cast,static_cast转型
C++四种新式转型: const_cast(expression) dynamic_cast(expression) reinterpret_cast(expression) static_cast( ...
- Java学习笔记:2022年1月6日(补充)
Java学习笔记:2022年1月6日(补充) 摘要:这篇笔记主要记录了2022年1月6日下午的笔记,主要内容为Java语言中的基础操作,以及基础知识点,了解这些后基本上就可以使用Java写算法了. ...
- 解决xcode每次编译都需要输入用户名和密码
MacOS:11.1 Xcode:12.3 一.打开你的 钥匙串, 如果不知道 打开你的 spotlight搜索 工具 ,输入"钥匙串" 二.登录--->iPhone de ...
- 数据结构与算法 -> 并查集
一.并查集概念 并查集是一种树形的数据结构,顾名思义,它用于处理一些不交集的合并及查询问题. 它支持两种操作: 查找(Find):确定某个元素处于哪个子集,单次操作时间复杂度 O(α(n)),即查询元 ...
- (21)go-micro微服务logstash使用
目录 一 Logstash介绍 二 Logstash作用 三 Logstash工作原理 四 Logstash安装 1.拉取镜像 2.运行命令 3.查看是否运行 五 Logstash使用 六 最后 一 ...
- Java基础学习笔记-Java数据类型转换-(~ ̄▽ ̄)~
JAVA数据类型和JS数据类型转换不一样,因为它是强类型语言嘛 类型转换规则 不允许数值类型和布尔类型 转换 整型.实型.字符型数据可以混合运算 类型转换分类 自动类型转换-隐式转换 1.整数转换为小 ...
- DVWA系列3:CSRF
DVWA系列3:CSRF 前言 CSRF(Cross-site request forgery),即跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 比如说,用户 ...
- ubuntu20.04 gnome桌面系统添加开机自启动GUI程序
在终端执行 gnome-session-properties,点击添加自己的脚本或执行文件,便可以在用户登录后自动执行.
- redis georadius源码分析与性能优化
原文地址: https://blog.fanscore.cn/a/51/ 背景 最近接到一个需求,开发中使用了redis georadius命令取附近给定距离内的点.完工后对服务进行压测后发现geor ...
- day09-2-验证以及国际化
验证以及国际化 1.概述 (1)概述 对于输入的数据(比如表单数据),进行必要的验证,并给出相应的提示信息 对于验证表单数据,SpringMVC 提供了很多使用的注解,这些注解由 JSR 303验证框 ...