本文转自测试人社区,原文链接:ceshiren.com/t/topic/280…
使用场景
- 通过 Tag 对用例分组:
- 环境分组: 测试环境、预发布环境
- 阶段分组: 冒烟用例
- 版本分组: V1.1、V1.2
Tag 标记用例
- 设置标签
- 根据标签执行
- 结合 Maven 执行
- 结合测试套件执行
设置标签
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
public class TagExampleTest {
@Tag("preprod")
@Test
void hogwarts() {
System.out.println("预生产环境");
}
@Tag("test")
@Test
void hogwarts2() {
System.out.println("测试环境");
}
@Tag("dev")
@Test
void hogwarts3() {
System.out.println("开发环境");
}
@Tag("dev")
@Tag("test")
@Test
void hogwarts4() {
System.out.println("开发+测试环境");
}
}
Maven 结合 tag 构建-修改 pom 文件
groups表示执行包含标签或者标签表达式的用例。excludedGroups表示不执行包含该标签或者标签表达式的用例。- 使用命令
mvn clean test执行用例。
org.apache.maven.plugins maven-surefire-plugin 2.22.2 test dev
Maven 结合 tag 构建-使用命令行构建
- 注意: 如果使用命令行的同时也配置了 pom 文件, pom 的配置优先级更高
执行 test 标签的用例
mvn clean test -Dgroups=“test”
执行不含test 标签的用例
mvn clean test -DexcludedGroups=“test”
Tags 的命名规范
- 不准为空。
- 标签不得包含空格。
- 标签不得包含 ISO 控制字符。
- 标签不得包含以下任何保留字符
,(、)&|!
Tag 表达式
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- & 在xml 中表示 & 与的关系 -->
<groups>test&dev</groups>
<!-- 不要执行的标签 -->
<!--<excludedGroups>主流程方法</excludedGroups>-->
</configuration>
<version>2.22.2</version>
</plugin>
Tag 表达式结合命令行
执行 没有test 标签的用例
mvn clean test -Dgroups=“!test”
执行 dev 或 test 标签的用例
mvn clean test -Dgroups=“dev|test”
执行既有 dev 也有 test 标签的用例
mvn clean test -Dgroups=“dev&test”
自定义标签
- 问题: 注解比较啰嗦,如果需要设置 Tag 的地方比较多,代码会显得比较冗余
- 解决方案: 直接使用自定义的标签做注解
如何自定义标签
- 自定义标签
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//定义标签
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Tag("Preprod")
@Test
public @interface PreprodTest {
}
- 使用自定义标签
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
//设置自定义Tag后使用mvn clean test 执行
class TagExampleTest {
@CustomTagTest
void testCustomTag() {
System.out.println("自定义的标签");
}
void testCustomTag2() {
System.out.println("无自定义标签");
}
}
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置