From 559c47c42aec5ffa244a168a7fcb1e5cc740e81b Mon Sep 17 00:00:00 2001 From: Shuaishuai Dai <2111319672@qq.com> Date: Fri, 3 Feb 2023 16:23:41 +0800 Subject: [PATCH] up junit5 doc --- java/spring/Junit5.md | 146 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 142 insertions(+), 4 deletions(-) diff --git a/java/spring/Junit5.md b/java/spring/Junit5.md index 762072f..34bb36f 100644 --- a/java/spring/Junit5.md +++ b/java/spring/Junit5.md @@ -1,6 +1,6 @@ -## JUnit5 +## `JUnit5 -#### 注解 +# 注解 JUnit4包路径:**org.junit** @@ -32,7 +32,7 @@ JUnit5包路径: **org.junit.jupiter.api** | unknown | @TestClassOrder | 用于@Nested注解的测试类,可以配置[测试类执行顺序](https://links.jianshu.com/go?to=https%3A%2F%2Fjunit.org%2Fjunit5%2Fdocs%2Fcurrent%2Fuser-guide%2F%23writing-tests-test-execution-order-classes)。 | | unknown | @TestFactory | 测试工厂 | -#### 断言 +# 断言 | 断言方法 | 描述 | | ---------------------- | ------------------------------------------------------------ | @@ -55,7 +55,7 @@ Junit4断言静态类:**org.junit.Assert** JUnit5断言静态类:**org.junit.jupiter.Assertions** -#### 其他 +# 其他 **引擎** @@ -75,3 +75,141 @@ Junit5:**junit-jupiter-engine** | @Transactional | 不进行事务提交 等同于@RollBack(value=true) | | @Commit | 进行事务提交 等同于@RollBack(value=false) | +# 案例 + +## 嵌套测试+Order + +执行TestClass 会执行该类下得所有方法 + +@ Nested用于表示注释类是嵌套类。 可以共享的非静态测试类 (即内部类) 使用enclosed类的实例进行设置和状态。封闭类可以是顶级测试类,也可以是 另一个 @ Nested测试类,嵌套可以任意深。 + +@TestMethodOrder注解 设置方法执行顺序策略 有以下三种策略可以设置 + +| 策略类 | 描述 | +| ----------------------------- | -------------------------- | +| MethodOrderer.Alphanumeric | 根据方法的字母数字排序 | +| MethodOrderer.OrderAnnotation | 根据@Order注解进行排序执行 | +| MethodOrderer.Random | 随机执行 | + +### @Nested+@TestMethodOrder(MethodOrderer.Alphanumeric.class) + +**实例代码:** + +```java +package com.guadou.erp.service.wms.service.impl; + +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +/** + * @author dss + * @since 2023/2/3 + */ +public class TestNested { + @Nested + @TestMethodOrder(MethodOrderer.Alphanumeric.class) + class TestClass{ + @Test + void testa(){ + System.out.println("testa"); + } + @Test + void testb(){ + System.out.println("testb"); + } + @Test + void testc(){ + System.out.println("testc"); + } + } +} +``` + +### @Nested+@TestMethodOrder(MethodOrderer.OrderAnnotation.class) + +**输出信息:** + +```java +testa +testb +testc +``` + +**实例代码:** + +```java +package com.guadou.erp.service.wms.service.impl; + +import org.junit.jupiter.api.*; + +/** + * @author dss + * @since 2023/2/3 + */ +public class TestNested { + @Nested + @TestMethodOrder(MethodOrderer.OrderAnnotation.class) + class TestClass{ + @Test + @Order(3) + void testa(){ + System.out.println("testa"); + } + @Test + @Order(1) + void testb(){ + System.out.println("testb"); + } + @Test + @Order(2) + void testc(){ + System.out.println("testc"); + } + } +} +``` + +### @Nested+@TestMethodOrder(MethodOrderer.Random.class) + +**实例代码:** + +```java +package com.guadou.erp.service.wms.service.impl; + +import org.junit.jupiter.api.*; + +/** + * @author dss + * @since 2023/2/3 + */ +public class TestNested { + @Nested + @TestMethodOrder(MethodOrderer.Random.class) + class TestClass{ + @Test + void testa(){ + System.out.println("testa"); + } + @Test + void testb(){ + System.out.println("testb"); + } + @Test + void testc(){ + System.out.println("testc"); + } + } +} +``` + +**输出:** + +```java +二月 03, 2023 4:22:01 下午 org.junit.jupiter.api.MethodOrderer$Random +信息: MethodOrderer.Random default seed: 4392369797561700 +testa +testc +testb +``` +