Spring Boot 单元测试(三)@Tag

Spring Boot 单元测试(三)@Tag,第1张

Spring Boot 单元测试(三)@Tag 前言

Spring Boot 使用 JUnit5 提供的@Tag注解对测试类或方法打标签,以便于在执行测试时按标签进行过滤。

一、标签命名规范
  1. 标签名左右不能带空格,执行测试时会做trim处理;
  2. 标签名不能用以下字符:(、)、&、|、!、,。
二、基本使用方法
  1. 定义一个单元测试类,在类上添加便签test-1,其中定义两个测试方法,分别添加标签level-1和level-2。
package com.example.demo;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag("test-1")
public class UnitTest1 {

    @Test
    @Tag("level-1")
    public void test1() {
        System.out.println("Test 1-1");
    }

    @Test
    @Tag("level-2")
    public void test2() {
        System.out.println("Test 1-2");
    }
}
复制代码
  1. 定义另一个单元测试类,在类上添加标签test-2,也定义两个测试方法,分别添加标签level-1和level-2。
package com.example.demo;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag("test-2")
public class UnitTest2 {

    @Test
    @Tag("level-1")
    public void test1() {
        System.out.println("Test 2-1");
    }

    @Test
    @Tag("level-2")
    public void test2() {
        System.out.println("Test 2-2");
    }
}
复制代码
  1. 执行以下 Maven 命令,观察对应的测试执行过程。
mvn clean test -Dgroups=test-1
mvn clean test -Dgroups=test-2
mvn clean test -Dgroups=level-1
mvn clean test -Dgroups=level-2
复制代码
  1. 除使用 Maven 命令执行标签过滤测试外,还可以通过配置surefire插件执行标签过滤测试。(surefire是个测试引擎)

    org.apache.maven.plugins
    maven-surefire-plugin
    
        level-1
        *Test*.java
    

复制代码
三、标签表达式

以上关于标签的基本使用方法中,每次测试仅能指定执行一种标签,如果要实现更复杂的标签过滤就要使用标签表达式,即通过与(&)、或(|)、非(!)三种 *** 作符将标签连接起来。

对应的 Maven 命令格式:

mvn clean test -Dgroups='test-1 & level-1'
复制代码

surefire配置格式:


    org.apache.maven.plugins
    maven-surefire-plugin
    
        test-1 | level-2
        *Test*.java
    

复制代码
四、自定义标签注解
  1. 自定义标签注解
package com.example.demo;

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;

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("level-1")
public @interface Level1 {
}
复制代码
  1. 将@Tag注解替换成自定义注解
@Test
@Level1
public void test1() {
    System.out.println("Test 1-1");
}
复制代码
  1. 还可以进一步简化,将@Test合入自定义标签注解。
package com.example.demo;

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.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Test
@Tag("level-1")
public @interface Level1 {
}
复制代码
  1. 测试方法只使用自定义标签注解。
@Level1
public void test1() {
    System.out.println("Test 1-1");
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存