第一步: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. 《STL源码剖析》STL的双层配置器

    SGI STL第一级配置器: template<int inst> class __malloc_alloc_template{...}; 其中: 1.allocate()直接使用mall ...

  2. DVWA靶场实战(九)——Weak Session IDS

    DVWA靶场实战(九) 九.Weak Session IDS: 1.漏洞原理: Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接 ...

  3. webpack打包后发现有一部分代码还携带注释,如何解决?/webpack打包删除注释以及console.log--快快点进来看一看吧~~

    1.自己配置了一个webpack,打包后发现里边部分代码还存在注释,顿感不妙 废话不多说 解决如下: npm install terser-webpack-plugin --save-dev 然后在w ...

  4. JSP第五次作业

    1.教材P78-79  例4-9 1 <%@ page language="java" import="java.util.*" pageEncoding ...

  5. spring boot swagger ui使用 nginx 部署后无法使用问题

    location /saleapi/ { ## 指定HOST proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_ ...

  6. 高精度计算模板 -感谢acwing

    高精度加 1 // C = A + B, A >= 0, B >= 0 2 vector<int> add(vector<int> &A, vector&l ...

  7. 面向对象程序设计(三):C++模板operator Type类型转换

    学习算法的时候遇到了一个不认识的写法,去网上查了查,看到有一篇写的挺好的,转载过来了 C++隐式类型转换运算符operator type()用法详解 对象向基本数据类型转换: 点击查看代码 #incl ...

  8. CSS特效集锦(9款 , 总有一款是你喜欢的)

    主要是: 穿越时空特效, 图片放大镜, 3D相册, 立方体相册, 昼夜更替特效, 飘雪, 七彩雨, 签名生成器, 水波纹动画等 代码部分 <section> <div class=& ...

  9. P20_事件绑定

    事件绑定 什么是事件 事件是渲染层到逻辑层的通讯方式.通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理. 小程序中常用的事件 事件对象的属性列表 当事件回调触发的时候,会收到一个事件对 ...

  10. day12-SpringMVC文件上传

    SpringMVC文件上传 1.基本介绍 SpringMVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.spring 用 Jacarta Com ...