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. Angular系列教程之生命周期钩子

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  2. Linux-用户组-groupad-groupdel-usermod

  3. scikit-learn.datasets 机器学习库

    scikit-learn是一个用于Python的机器学习库,提供了大量用于数据挖掘和数据分析的工具.以下是对这些函数和方法的简要描述: clear_data_home: 清除数据集目录的内容. dum ...

  4. [转帖]银河麒麟v10下载(服务器版 桌面版) - 2023-11-14更新

    银河麒麟v10下载(服务器版 桌面版) - 2023-11-14更新 如需转载请标明出处:[http://blog.csdn.net/itas109] 文章目录 银河麒麟v10下载(服务器版 桌面版) ...

  5. [转帖]mysql百万级性能瓶颈-数据库选型

    项目中使用了mysql数据库,但数据量增长太快,不久到了百万级,很快又到表到了千万级,尝试了各种优化方式,最终效果仍难达到秒级响应,那么引发了我关于数据库选型到一些思考. 1.mysql的单表性能瓶颈 ...

  6. PMC相关RAID卡信息查看方法

    PMC相关RAID卡信息查看方法 摘要 昨天简单整理了LSI相关设备的信息 今天计划学习下PMC相关的RAID卡信息. 也就是偶昨天storcli 查看 controller为0 的情况. 感觉部分服 ...

  7. 使用smem 计算Oracle用户下内存占用情况.

    1. 本来计划使用 ps 命令进行查看, 但是发现ps 最多查询出来的是 RSS的内存数据, 会多添加很多冗余的内存数据量进来, 于是作罢 2. 找了下公司的方神, 说可以使用smem 然后简单看了下 ...

  8. 如何去掉 node.js 获取MySQL数据产生的RowDataPacket

    如何去掉 node.js 获取MySQL数据产生的RowDataPacket 利用JSON.stringify()把对象转为对象字符串,可去掉RowDataPacket. router.post('/ ...

  9. elementui 的tabs组件出现蓝色边框问题

    elementui 的tabs组件出现蓝色边框问题 /deep/ .el-tabs__item:focus.is-active.is-focus:not(:active) { -webkit-box- ...

  10. 【验证码逆向专栏】数美验证码全家桶逆向分析以及 AST 获取动态参数

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...