首页 > 其他分享 >枚举参数的参数化@EnumSource

枚举参数的参数化@EnumSource

时间:2023-08-23 23:22:20浏览次数:45  
标签:jupiter 枚举 参数 org import EnumSource junit

  • 使用枚举类作为测试数据。
  • 枚举参数参数化注解 @EnumSource。
  • 必须与 @ParameterizedTest 结合使用。

需要添加@EnumSource注解

测试方法传入枚举类作为参数

package com.mytest;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import java.util.EnumSet;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class EnumTest {
    // 创建一个枚举类
    public enum HogwartsUnit {
        Harry("Harry", 18),
        AD("AD", 19);
        private final String name;
        private final Integer age;
        private HogwartsUnit(String name, Integer age){
            this.name = name;
            this.age = age;
        }
    }

    @ParameterizedTest
    // @EnumSource 注解表示使用枚举类型
    @EnumSource
    // 枚举类作为参数传入测试方法
    void testWithEnumSourceInclude(HogwartsUnit unit) {
        assertTrue(EnumSet.of(HogwartsUnit.Harry, HogwartsUnit.AD).contains(unit));
    }
}

 

通过 names 参数指定枚举值

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import java.util.EnumSet;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class EnumTest {
    // 创建一个枚举类
    public enum HogwartsUnit {
        Harry("Harry", 18),
        AD("AD", 19);
        private final String name;
        private final Integer age;
        private HogwartsUnit(String name, Integer age){
            this.name = name;
            this.age = age;
        }
    }
    @ParameterizedTest
    // @EnumSource 注解表示使用枚举类型, 
    // 通过 names 参数指定使用的枚举值
    @EnumSource(names = {"Harry"})
    // 枚举类作为参数传入测试方法
    void testWithEnumSourceInclude(HogwartsUnit unit) {
        assertTrue(EnumSet.of(HogwartsUnit.Harry, HogwartsUnit.AD).contains(unit));
    }
}

 


 

  • mode 参数指定规则
    • EXCLUDE 代表取反,即指定名称不等于的场景
    • MATCH_ALL 代表通过正则进行匹配
package com.mytest;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import java.util.EnumSet;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.params.provider.EnumSource.Mode.EXCLUDE;
import static org.junit.jupiter.params.provider.EnumSource.Mode.MATCH_ALL;

public class EnumTest2 {
    // 创建一个枚举类
    public enum HogwartsUnit {
        Harry("Harry", 18),
        AD("AD", 19);
        private final String name;
        private final Integer age;
        private HogwartsUnit(String name, Integer age){
            this.name = name;
            this.age = age;
        }
    }
    @ParameterizedTest
    // @EnumSource 注解表示使用枚举类型,
    // 通过 mode 参数指定规则
    // mode 值为 EXCLUDE 代表取反,即指定名称不为Harry的枚举值
    @EnumSource(mode = EXCLUDE, names = {"Harry"})
    // 枚举类作为参数传入测试方法
    void testWithEnumSourceExclude(HogwartsUnit unit) {
        assertTrue(EnumSet.of(HogwartsUnit.Harry, HogwartsUnit.AD).contains(unit));
    }
    @ParameterizedTest
    // @EnumSource 注解表示使用枚举类型,
    // 通过 mode 参数指定规则
    // mode 值为 EXCLUDE 代表取反,即指定名称不为Harry的枚举值
    @EnumSource(mode = MATCH_ALL, names = {".*ry"})
        // 枚举类作为参数传入测试方法
    void testWithEnumSourceRegex(HogwartsUnit unit) {
        assertTrue(unit.name().endsWith("ry"));    }
}

 


自动化测试过程中,需要验证某些特殊场景时,需要传空或者传null

  • null 参数的参数化注解 @NullSource 注解
  • 参数为空的参数化注解 @EmptySource 注解
  • 需要 null 和空都进行参数化,使用 @NullAndEmptySource 注解
  • 还有其他参数可以用@ValueSource继续提供
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EmptySource;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.junit.jupiter.params.provider.NullSource;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.*;

public class EmptyTest3{
    
    @ParameterizedTest
    // @NullSource 注解表示使用null参数进行测试输入
    @NullSource
    void testNullSource(String param) {
        // 断言入参为null
        System.out.println(param);
        assertNull(param);
    }
    @ParameterizedTest
    // @NullSource 注解表示使用null参数进行测试输入
    @EmptySource
    void testEmptySource(String param) {
        // 断言入参为null
        assertTrue(param.isEmpty());
    }
    @ParameterizedTest
    // @NullAndEmptySource 注解结合了 @EmptySource 与 @NullSource
    @NullAndEmptySource
    void testEmptyNullSource(String param) {
        // 断言参数是空的
        assertTrue(param == null || param.isEmpty());
    }
    @ParameterizedTest
    // @NullAndEmptySource 注解结合了 @EmptySource 与 @NullSource
    @NullAndEmptySource
    // 如果还有其他参数可以用@ValueSource继续提供
    @ValueSource(strings = {""})
    void testEmptyNullAndValueSource(String param) {
        // 断言参数是空的
        assertTrue(param == null || param.isEmpty());
    }
}

 

标签:jupiter,枚举,参数,org,import,EnumSource,junit
From: https://www.cnblogs.com/ixtao/p/17653030.html

相关文章

  • 多参数的参数化@CsvSource
    多参数参数化注解 @CsvSource。@CsvSource 通过指定的分隔符实现参数化。packagecom.mytest;importorg.junit.jupiter.params.ParameterizedTest;importorg.junit.jupiter.params.provider.CsvSource;importstaticorg.junit.jupiter.api.Assertions.assertEquals;i......
  • 将request中的参数转换成map
    /***将request中的参数转换成map*/publicstaticMap<String,String>requestParamsToMap(HttpServletRequestrequest){Map<String,String>reqMap=newHashMap<>();Enumerationenu=request.getParameterNames();while(enu.hasMoreEl......
  • 参数化-单参数@ValueSource
    引入依赖<!--参数化依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.8.1</version><scope>test</scope></dependency......
  • C#命令行传输参数
    staticvoidMain(string[]args){varoo=args;if(oo.Length>0){XLog.XTrace.WriteLine("收到下发的tif文件:"+oo[0]);//System.Windows.Forms.MessageBox.Show(oo[0]);......
  • MT6873,MTK6873,天玑800核心板基本参数跑分,5G安卓核心板
    MT6873核心板采用了台积电7纳米先进制程,拥有8个核心。其中包括4个主频高达2GHz的Cortex-A76大核心和4个主频高达2GHz的Cortex-A55小核心。在安兔兔跑分测试中,该核心板通常可以达到约32万分的得分。这款核心板还集成了ARMMali-G57MC5GPU,并支持Sub-6GHz频段的NSA和SA双模5G。该核......
  • H5支付 商家参数格式有误 请联系商家解决
    我们公司是做教育培训的,APP的支付使用了H5支付,2023-07月份开始有大量用户反馈:OPPP、一加手机会出现【商家参数格式有误】我这边通过抓包工具 Fiddler发现来源参数没有丢失,抓包下本来异常手机居然也可以正常支付。刷新当前错误页面也可以正常调起支付,无痕模式下也可以正常支付......
  • Nginx的referer 参数的用法和原理
    Nginx的referer参数用于限制请求来源,可以有效地防止一些恶意公鸡和爬虫。本文将详细介绍Nginx的referer参数的用法、原理以及如何进行配置。一、referer参数简介referer是HTTP协议中的一个请求头字段,用于表示当前请求是从哪个页面发出的。通过检查referer字段,我们可以了解请求的来......
  • 晶振测试仪GDS-80系列参数
    晶振测试仪GDS-80系列一、产品简介晶振测试仪GDS-80系列是高性价比的晶振测试系统,采用网络分析技术,实现智能化测量,符合IEC-444标准。测量频率范围10KHz-200KHz,1MHz-200MHz,附USB接口进行数据通迅。晶振测试仪GDS-80系列采用π型网络零相位法实现串联谐振频率的测量,采用直接阻抗......
  • PHP接口请求参数对策加密+
    <?php//加密publicfunctionencrypt($data){$id=json_encode($data);$str=base64_encode($id);$str=openssl_encrypt($str,'aes-128-cbc',\config('aes_passwd'),OPENSSL_ZERO_PADDING,\config('aes_iv&......
  • swift学习笔记之---数组、字典、枚举、结构体
    1、数组-Arraylettypes=["none","warning","error"]//省略类型的数组声明letmenbers=[String]()//声明一个空数组menbers.append("six")//添加元素menbers+=["seven"]//添加元素menbers.insert("one"......