JUnit5学习之五:标签(Tag)和自定义注解,马哥linux2024全套视频

@Tag(“easy”)

@DisplayName(“first-2”)

void first2Test() {

log.info(“first2Test”);

assertEquals(2, Math.addExact(1, 1));

}

@Test

@Tag(“hard”)

@DisplayName(“first-3”)

void first3Test() {

log.info(“first3Test”);

assertEquals(2, Math.addExact(1, 1));

}

}

  1. 第二个测试类SecondTest.java,也是类和方法都有Tag注解:

package com.bolingcavalry.tag.service.impl;

import lombok.extern.slf4j.Slf4j;

import org.junit.jupiter.api.DisplayName;

import org.junit.jupiter.api.Tag;

import org.junit.jupiter.api.Test;

import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest

@Slf4j

@Tag(“second”)

public class SecondTest {

@Test

@Tag(“easy”)

@DisplayName(“second-1”)

void second1Test() {

log.info(“second1Test”);

assertEquals(2, Math.addExact(1, 1));

}

@Test

@Tag(“easy”)

@DisplayName(“second-2”)

void second2Test() {

log.info(“second2Test”);

assertEquals(2, Math.addExact(1, 1));

}

@Test

@Tag(“hard”)

@Tag(“important”)

@DisplayName(“second-3”)

void second3Test() {

log.info(“second3Test”);

assertEquals(2, Math.addExact(1, 1));

}

}

  • 以上就是打好了标签的测试类和测试方法了,接下来看看如何通过这些标签对测试方法进行过滤,执行单元测试有三种常用方式,咱们挨个尝试每种方式如何用标签过滤;

在IDEA中做标签过滤

  1. 如下图所示,点击红框中的Edit Configurations…:

在这里插入图片描述

  1. 如下图红框,在弹出的窗口上新增一个JUnit配置:

在这里插入图片描述

  1. 接下来的操作如下图所示,Test kind选择Tags,就会按照标签过滤测试方法,Tag expression里面填写过滤规则,后面会详细讲解这个规则,这里先填个已存在的标签important:

在这里插入图片描述

  1. 创建好JUnit配置后,执行下图红框中的操作即可执行单元测试:

在这里插入图片描述

  1. 执行结果如下,所有打了important标签的测试方法被执行:

在这里插入图片描述

用maven命令时做标签过滤

  1. 前面试过IDEA上按标签过滤测试方法,其实用maven命令执行单元测试的时候也能按标签来过滤,接下来试试;

  2. 在父工程junitpractice的pom.xml所在目录下,执行以下命令,即可开始单元测试,并且只执行带有标签的方法:

mvn clean test -Dgroups=“important”

  1. 执行完毕后结果如下:

在这里插入图片描述

  1. 翻看日志,可见只有打了important标签的测试方法被执行了,如下图红框所示:

在这里插入图片描述

  1. 再看看其他子工程的执行情况,用前一篇文章里的conditional为例,可见没有任何测试方法被执行,如下图红框所示:

在这里插入图片描述

  1. 再去看看surefire插件给出的测试报告,报告文件在junitpractice\tag\target\surefire-reports目录下,下图红框中的文件就是测试报告:

在这里插入图片描述

  1. 打开上图红框中的一个文件,如下图红框,可见只有打了important标签的测试方法被执行了:

在这里插入图片描述

  • 以上就是maven命令执行单元测试时使用标签过滤的方法,接下来试试在使用maven-surefire-plugin插件时如何通过做标签过滤

用surefire插件时做标签过滤

  1. surefire是个测试引擎(TestEngine),以maven插件的方式来使用,打开tag子工程的pom.xml文件,将build节点配置成以下形式,可见groups就是标签过滤节点,另外excludedGroups节点制定的hard标签的测试方法不会执行:

org.springframework.boot

spring-boot-maven-plugin

maven-surefire-plugin

2.22.2

important

hard

  1. 在tag子工程的pom.xml所在目录,执行命令mvn clean test即可开始单元测试,结果如下,可见打了important标签的first1Test被执行,而second3Test方法尽管有important标签,但是由于其hard标签已经被设置为不执行,因此second3Test没有被执行:

在这里插入图片描述

标签表达式

  1. 前面咱们用三种方法执行了单元测试,每次都是用important标签过滤,其实除了指定标签,JUnit还支持更复杂的标签过滤,即标签表达式

  2. 所谓标签表达式,就是用"非"、“与”、"或"这三种操作符将更多的标签连接起来,实现更复杂的过滤逻辑;

  3. 上述三种操作符的定义和用法如下表:

| 操作符 | 作用 | 举例 | 举例说明 |

| — | — | — | — |

| & | 与 | important & easy | 既有important,又有easy标签,

在本文是first1Test |

| ! | 非 | important & !easy | 有important,同时又没有easy标签,

在本文是second3Test |

| | | 或 | important | hard | 有important标签的,再加上有hard标签的,

在本文是first1Test、first3Test、second3Test |

  1. 试试标签表达式的效果,如下图红框,修改前面创建好的IDEA配置,从之前的important改为important | hard:

在这里插入图片描述

  1. 再次执行这个配置,结果如下图红框所示,只有这三个方法被执行:first1Test、first3Test、second3Test,可见标签表达式生效了:

在这里插入图片描述

  1. 在maven命令和surefire插件中使用标签表达式的操作就不在文中执行了,请您自行验证;

自定义注解

  1. JUnit支持自定义注解,先回顾之前的代码,看咱们是如何给方法打标签的,以first3Test方法为例:

@Test

@Tag(“hard”)

@DisplayName(“first-3”)

void first3Test() {

log.info(“first3Test”);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

最新整理面试题
在这里插入图片描述

上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

最新整理电子书

在这里插入图片描述

最新整理大厂面试文档

在这里插入图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

-1712650499074)]

上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

最新整理电子书

[外链图片转存中…(img-eqOFCmmE-1712650499075)]

最新整理大厂面试文档

[外链图片转存中…(img-xFngYsSX-1712650499075)]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-5hzMzsjo-1712650499075)]

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值