第一步: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()。

我们有多种方法实现:

  1. 按执行顺序重新给测试方法命名(不推荐)
  2. 设置方法执行顺序,添加@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单元测试简单使用的更多相关文章

  1. JUnit单元测试框架的使用

    http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...

  2. 单元测试系列:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...

  3. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  4. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  5. 单元测试系列之三:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...

  6. Junit 单元测试、BeanUtils、Properties类

    一. Junit单元测试 1.1. Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好 ...

  7. Junit单元测试多线程的问题

    今天下午很快完成了一个接口的监控功能,然后屁颠屁颠地用Junit开始单元测试.然后我就开始陷入崩溃的边缘... 监控结束后需要将监控结果以邮件的形式发送给运营的小伙伴维护,前面测试还是很顺利,到了开多 ...

  8. Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...

  9. Junit单元测试、反射、注解

    Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用:白盒测试 * 步 ...

  10. 基础-Junit单元测试_反射_注解

    一.Junit单元测试 1.1 测试分类: 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 白盒测试:需要写代码的.关注程序具体的执行流程. 1.2 Junit使用(白盒测试) 使用步 ...

随机推荐

  1. Django之数据增删改查、Django请求生命周期流程图、Django路由层(路由匹配、转换器、正则匹配)、反向解析

    今日内容详细 可视化界面之数据增删改查 针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取 在模型类中定义__str__方法可以在数据对象被执行打印操作的时候方便查看 ''' form扁担 ...

  2. (19)go-micro微服务filebeat收集日志

    目录 一 Filebeat介绍 二 FileBeat基本组成 三 FileBeat工作原理 四 Filebeat如何记录文件状态: 五 Filebeat如何保证事件至少被输出一次 六 安装Filebe ...

  3. C Primer Plus 5.11 編程練習

    /*C Primer Plus (5.10) 9*/ 1 #include<stdio.h> 2 #define G 103 3 int main() 4 { 5 char ch=96; ...

  4. SQL分类-DDL_操作数据库_创建&查询

    SQL分类 1.DDL(Data Definition Language)数据定义语言 用来定义数据库对象:数据库,表,列等.关键字:create , drop, alter 等 2.DML(Data ...

  5. LeetCode_单周赛_328

    6291. 数组元素和与数字和的绝对差 代码 模拟即可 class Solution { public int differenceOfSum(int[] nums) { int ans = 0; i ...

  6. Web前端--HTML+Canvas+Js实现3D魔方小游戏

    一.案列效果 二.案例思路 1.先将平面上的6个DIV拼接在一起.形成一张类似于3d立方体图形展开的平面图. 2.我们需要将每一个面旋转到相应的位置上,每一个面的旋转轴都是不一样的.上下,左右,分别对 ...

  7. Navicat修改mysql表的字符集和排序规则

    突然想起前一阵子,在做javaweb后端debug的时候遇到的这个问题.由于在Dao层测试的时候没有尝试过中文的测试例,所以在Service写好后一直不报错但是无法插入数据库. 找了好久才发现是Mys ...

  8. cv::Mat::step详解

    1.简介 step的几个类别区分: step:矩阵第一行元素的字节数 step[0]:矩阵第一行元素的字节数 step[1]:矩阵中一个元素的字节数 step1(0):矩阵中一行有几个通道数 step ...

  9. 树莓派4B—LCD触摸屏和硬件串口配置

    1.LCD触摸屏直接下载官网驱动,这里选用的是3.5寸显示屏,解压后直接运行 sudo ./LCD35-show 然后重启. 注意:一定要先安装LCD驱动,因为安装驱动会修改/boot/config. ...

  10. 微信小程序组件封装传值以及问题点规避

    封装组件 1.在components文件加下新建组件文件夹,在该文件夹下新建组件 2.在app.json中注册该组件 "usingComponents": { "page ...