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使用(白盒测试) 使用步 ...
随机推荐
- P8881 懂事时理解原神
简要题意 \(T\) 组数据,每组数据给出一个 \(n\) 个顶点,\(m\) 条边的无向无权图.求出使用下面的伪代码求 \(1\) 为源点的单源最短路答案正确的概率.保留 \(3\) 位小数. in ...
- 【MySQL】MySQL8安装
1. MySQL8安装 安装环境 操作系统:CentOS7 MySQL版本:8.0.28 安装方式:二进制Generic 软件路径:/app/database 数据路径:/data/3306 日志路径 ...
- 一个关于sum over的疑问
参考: http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html select * from bitest.tmp_0222_zym ; ...
- DLL的两种加载方式
案例简述 在某项目中,需要使用两个不同版本的HCNetSDK库,我们通常使用的静态加载DLL的方式不能满足该需求,故用到动态加载DLL的方式. 背景技术及术语解释 静态加载:也称隐式调用,指在运行程序 ...
- Google Guice 用户指南 - Ⅰ:概览
译者:kefate 原文:https://github.com/google/guice/wiki/Overview 大家好,我是kefate.今天开始我将会把Google Guice的官方文档陆续翻 ...
- SpringCloud Sleuth链路追踪
1.概要 一般的,一个分布式服务跟踪系统,主要有三部分: 数据收集 数据存储 数据展示 然而这三个部分其实不都是由SpringCloud Sleuth(下面我简称为Sleuth)完成的,Sleuth负 ...
- Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题
Spring是目前Java开发中最流行的框架了,它的事务管理我们在开发中常常的用到,但是很多人不理解它事务的原理,导致开发中遇到事务方面的问题往往都要用很长的时间才能解决,下面就带着大家去深入了解Sp ...
- K8s 网络新手教程(Kubernetes Networking Guide for Beginners)
K8s 网络新手教程(Kubernetes Networking Guide for Beginners) 原文链接: Kubernetes Networking Guide for Beginner ...
- 浅显直白的Python深拷贝与浅拷贝区别说明
一.可变数据类型与不可变数据类型 在开始说深拷贝与浅拷贝前,我们先来弄清楚,可变对象与不可变对象 总的来说,Python数据类型可分为可变数据类型与不可变数据类型 可变数据类型:在不改变对象所指向的地 ...
- P4525 【模板】自适应辛普森法 1
\(\text{Solution}\) 题目 \(\text{Simpson}\) 公式: \[\int_l^r f(x) {\mathrm d}x = \frac{(r-l)(f(l)+f(r)+4 ...