软件测试学习笔记丨JUnit5标记测试用例

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28029

使用场景

  • 通过 Tag 对用例分组:
  • 环境分组: 测试环境、预发布环境
  • 阶段分组: 冒烟用例
  • 版本分组: V1.1、V1.2

Tag 标记用例

  • 设置标签
  • 根据标签执行
  • 结合 Maven 执行
  • 结合测试套件执行

设置标签

登录后复制

plain 复制代码
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 表达式

登录后复制

plain 复制代码
<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 的地方比较多,代码会显得比较冗余
  • 解决方案: 直接使用自定义的标签做注解

如何自定义标签

  1. 自定义标签

登录后复制

plain 复制代码
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 {
}
  1. 使用自定义标签

登录后复制

plain 复制代码
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("无自定义标签");
    }
}
相关推荐
幸福在路上wellbeing6 分钟前
AI 智能体开发 · Day 1 详细学习手册
人工智能·学习
xian_wwq12 分钟前
【学习笔记】框架层坍缩——LangChain 们正在被重新定义-14/15
笔记·学习·langchain
大白菜和MySQL17 分钟前
elk部署和kibana图形化展示
java·笔记·elasticsearch
吃好睡好便好1 小时前
Creo中工作目录的设置
学习·creo·工作目录
极地野狼 音乐哔哔1 小时前
【机器人 / 强化学习】DIVL:分布隐式价值学习
学习·机器人
pluviophile_s1 小时前
数据结构:第6讲:树与二叉树
数据结构·笔记
爱莉希雅&&&1 小时前
Rocky Linux 10.1 + K8s 1.36.3 离线集群部署笔记(Kubernetes)
linux·笔记·docker·kubernetes·calico
lichuangcsdn1 小时前
【Spring AI 学习(三)】实现简单的对话
java·人工智能·学习·spring·spring ai
星恒随风1 小时前
C++ 多态底层原理:静态绑定、动态绑定、虚函数表与工程实践
开发语言·c++·笔记·学习
go不是csgo2 小时前
从模板到五道 LeetCode:完全背包的 Golang 教学笔记
笔记·leetcode·golang