标记用例tag

  • 通过 Tag 对用例分组:
    • 环境分组: 测试环境、预发布环境
    • 阶段分组: 冒烟用例
    • 版本分组: V1.1、V1.2
  • 设置标签
  • 根据标签执行
    • 结合 Maven 执行
    • 结合测试套件执行
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
public class TagExampleTest {
    @Tag("preprod")
    @Test
    void test1(){
        System.out.println("预生产环境");
    }
    @Tag("test")
    @Test
    void test2(){
        System.out.println("测试环境");
    }
    @Tag("dev")
    @Test
    void test3(){
        System.out.println("开发环境");
    }
    @Tag("dev")
    @Tag("test")
    @Test
    void test4(){
        System.out.println("开发+测试环境");
    }
}

 

Maven 结合 tag 构建-修改 pom 文件

  • groups 表示执行包含标签或者标签表达式的用例。
  • excludedGroups 表示不执行包含该标签或者标签表达式的用例。
  • 使用命令 mvn clean test 执行用例
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
            <!-- 要执行的标签 -->
                <groups>test</groups>
            <!-- 不要执行的标签 -->
                <excludedGroups>dev</excludedGroups>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 注意: 如果使用命令行的同时也配置了 pom 文件, pom 的配置优先级更高

# 执行 test 标签的用例 mvn clean test -Dgroups="test"

# 执行不含test 标签的用例 mvn clean test -DexcludedGroups="test"

Tags 的命名规范

  • 不准为空。
  • 标签不得包含空格。
  • 标签不得包含 ISO 控制字符。
  • 标签不得包含以下任何保留字符
    • ,
    • ()
    • &
    • |
    • !

 

Tag 表达式

 

Tag 表达式含义示例
& 表示 与 关系 test1&test2表示执行既包含test1又包含test2的标签
! 表示 非 关系 !test表示执行没有test1标签的用例
| 表示 或 关系 test1|test2表示执行包含test1或包含test2的标签

 

在pom中配置使用

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!-- &amp; 在xml 中表示 & 与的关系 -->
                    <groups>test&amp;dev</groups>
                    <!-- 不要执行的标签 -->
               <!-- <excludedGroups>主流程方法</excludedGroups>-->
                </configuration>
                <version>2.22.2</version>
            </plugin>

# 执行 没有test 标签的用例
mvn clean test -Dgroups="!test"
# 执行 dev 或 test 标签的用例
mvn clean test -Dgroups="dev|test"
# 执行既有 dev 也有 test 标签的用例
mvn clean test -Dgroups="dev&test"

 

自定义标签

如果需要设置 Tag 的地方比较多,代码会显得比较冗余

解决方案: 直接使用自定义的标签做注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
//定义标签
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Tag("Preprod")
@Test
public @interface PreprodTest {
}

 

使用自定义标签
使用 mvn clean test 执行

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("无自定义标签");

    }
}

 

posted @ 2023-08-25 21:37  Mr_sven  阅读(10)  评论(0编辑  收藏  举报