JUnit5 的测试注解

在JUnit5中, 不再使用 @RunWith 注解, 改为使用 @ExtendWith(SpringExtension.class)

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class AccountTest {
@Resource
AccountMapper accountMapper; @Test
void test1_list() {
System.out.println("hello");
List<AccountDTO> accounts = accountMapper.list(new HashMap<>());
System.out.println(accounts.size());
}
}

对比JUnit4的测试注解

在JUnit4中, 使用的测试注解(非SpringBoot)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/spring/spring-commons.xml"})
public class IpBlacklistTest {
private static final Logger logger = LoggerFactory.getLogger(IpBlacklistTest.class);
@Resource(name="sessionTokenDTOService")
private SessionTokenDTOService sessionTokenDTOService; @Test
public void test() {
long from = TimeUtil.shiftByHour(new Date(), 48, 0).getTime();
ResultDTO result = sessionTokenDTOService.resetIpBlackList(from, 100);
System.out.println(result.getMessage());
}
}

在SrpingBoot中为

@RunWith(SpringRunner.class)
@SpringBootTest
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class RabbitMQTest {
private static Logger logger = LoggerFactory.getLogger(RabbitMQTest.class);
private static final TimeflakeId SFID = new TimeflakeId(100); @Resource(name="requestPOService")
private RequestPOService requestPOService; @Autowired
private SysConfig sysConfig; @Test
public void test1_freeze() {
EsbEntity<Head, Freeze> request = requestPOService.genPiaFreezRequest(302040, 100);
requestPOService.send(JacksonUtils.compressObject(request));
}
}

测试用例的顺序

https://www.baeldung.com/junit-5-test-order

In JUnit 5, we can use @TestMethodOrder to control the execution order of tests.

排序方式有

  • Alphanumeric
  • OrderAnnotation
  • Random
  • Custom Order

按方法字符排序

@TestMethodOrder(MethodOrderer.MethodName.class)
public class AlphanumericOrderUnitTest {
private static StringBuilder output = new StringBuilder(""); @Test
public void myATest() {
output.append("A");
} @Test
public void myBTest() {
output.append("B");
} @Test
public void myaTest() {
output.append("a");
} @AfterAll
public static void assertOutput() {
assertEquals(output.toString(), "ABa");
}
}

使用 @Order 注解排序

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {
private static StringBuilder output = new StringBuilder(""); @Test
@Order(1)
public void firstTest() {
output.append("a");
} @Test
@Order(2)
public void secondTest() {
output.append("b");
} @Test
@Order(3)
public void thirdTest() {
output.append("c");
} @AfterAll
public static void assertOutput() {
assertEquals(output.toString(), "abc");
}
}

使用随机排序

使用 MethodOrderer.Random 实现的伪随机排序测试

@TestMethodOrder(MethodOrderer.Random.class)
public class RandomOrderUnitTest { private static StringBuilder output = new StringBuilder(""); @Test
public void myATest() {
output.append("A");
} @Test
public void myBTest() {
output.append("B");
} @Test
public void myCTest() {
output.append("C");
} @AfterAll
public static void assertOutput() {
assertEquals(output.toString(), "ACB");
}
}

使用自定义排序

public class CustomOrder implements MethodOrderer {
@Override
public void orderMethods(MethodOrdererContext context) {
context.getMethodDescriptors().sort(
(MethodDescriptor m1, MethodDescriptor m2)->
m1.getMethod().getName().compareToIgnoreCase(m2.getMethod().getName()));
}
} @TestMethodOrder(CustomOrder.class)
public class CustomOrderUnitTest { // ... @AfterAll
public static void assertOutput() {
assertEquals(output.toString(), "AaB");
}
}

SpringBoot 2.6 和 JUnit 5 的测试用例注解和排序方式的更多相关文章

  1. SpringBoot项目下的JUnit测试

    在SpringBoot项目里,要编写单元测试用例,需要依赖4个jar.一个是最基本的JUnit,然后是spring-test和spring-boot-test. <!--test--> & ...

  2. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  3. Junit中常用的注解说明

    Java注解((Annotation)的使用方法是@注解名 ,能通过简单的词语来实现一些功能.在junit中常用的注解有@Test.@Ignore.@BeforeClass.@AfterClass.@ ...

  4. JUnit常用断言及注解

    断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 断言核心方法   assertArrayEquals(expecteds, actuals) 查看两个数组 ...

  5. Junit框架使用--JUnit常用断言及注解

    从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...

  6. 【Springboot】Springboot整合Jasypt,让配置信息安全最优雅方便的方式

    1 简介 在上一篇文章中,介绍了Jasypt及其用法,具体细节可以查看[Java库]如何使用优秀的加密库Jasypt来保护你的敏感信息?.如此利器,用之得当,那将事半功倍.本文将介绍Springboo ...

  7. Junit框架使用(4)--JUnit常用断言及注解

    从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...

  8. SpringBoot整合SpringSecurity示例实现前后分离权限注解

    SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证 作者:Sans_ juejin.im/post/5da82f066fb9a04e2a73daec 一.说 ...

  9. SpringBoot框架下基于Junit的单元测试

    前言 Junit是一个Java语言的单元测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量.是一个在发展,现在已经到junit5,在javaEE开发中与很多框架相集成 ...

  10. springboot 搭建 简单 web项目 【springboot + freemark模板 + yml 配置文件 + 热修复 + 测试用例】附源码

    项目 地址:  https://gitee.com/sanmubird/springboot-simpleweb.git 项目介绍: 本项目主要有一下内容: 1: springboot yml 配置 ...

随机推荐

  1. 8. exporter

    一.已经实现的收集器 1.1 可收集的内存指标 1.2 可收集的jetty指标 二.自定义收集 2.1 summer 2.2 histogram 三.架构设计 exporter作为Prometheus ...

  2. css - 隐藏body滚动条

    body::-webkit-scrollbar{ display: none; }

  3. Linux-文件压缩-tar-gzip

  4. [转帖]History of Unicode Release and Publication Dates

    www.unicode.org For ease of reference, this page collects together information about the dates for v ...

  5. [转帖]Nginx Rewrite重写功能

    目录 一.rewrite的概述 1.1.概述 1.2 跳转场景 1.3 跳转实现 1.4 Rewrite实际场景 二.常用的nginx正则表达式 三.rewrite命令 3.1 rewrite的语法格 ...

  6. [转帖]PG-用户|角色管理

    https://www.cnblogs.com/binliubiao/p/14415203.html 1. 角色 ​ 决定发起连接的命令的初始访问权限.在PG中,角色和用户相当于是一样的对象.区别在于 ...

  7. [转帖]《Linux性能优化实战》笔记(二)—— CPU 上下文切换(上)

    上一篇的最后一个例子,在多个进程竞争CPU时,我们看到每个进程实际上%usr部分只有20%多,70%多是在wait,但是load远远高于单个进程使用CPU达到100%. 这让我想到之前看的RWP公开课 ...

  8. Docker镜像精简方法之二 COPY vs ADD 与镜像层

    Docker镜像精简方法之二 COPY vs ADD 与镜像层 摘要 昨天只是讲了一下大体的思路. 但是没有实操. 今天想着修改一下默认的打包镜像的命令,验证一下效果 原始命令 FROM adopto ...

  9. jconsole的简单学习

    摘要 jconsole 是JDK自带的一款图形化监测工具 他可以监测本地程序,也可以检测远程的机器 在没有其他监控手段可以使用的情况下可以快速进行必要的监测 使用方法也比较简单. 本地监控 jcons ...

  10. 手写Promise自定义封装 then 函数

    Promise 自定义封装 then 函数 <script src="./Promise.js"></script> <script type=&qu ...