Jmockdata工具框架

源码地址:GitHub - jsonzou/jmockdata: The plugin to mock the java data by random.

1.简介

Jmockdata是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。

特性:

支持丰富多样的数据类型模拟,包括:Java基本类型、字符串、枚举、日期、数组、多维数组、集合[List|Set|Map]、枚举、Java对象等
支持通过正则表达式反向模拟数据
支持泛型
支持继承
支持循环依赖、自依赖(手动开启enabledCircle)
支持忽略字段
支持改变mockConfig来自定义模拟数据策略
支持自定义Mocker类扩展数据模拟类型
支持添加BeanMocker拦截器类改变模拟行为
支持JDK1.8+

2.使用

引入依赖

<dependency>

   <groupId>com.github.jsonzou</groupId>

   <artifactId>jmockdata</artifactId>

   <version>4.3.0</version>

 </dependency>

使用语法:

1.基础类型mock

支持以下基础类型直接模拟

描述

类型

基础类型byte boolean char short int long float double
包装类型包装Byte Boolean Character Short Integer Long Float Double
常用类型BigDecimal BigInteger Date LocalDateTime LocalDate LocalTime java.sql.Timestamp String Enum
多维数组以上所有类型的多维数组 如:int[] int[][] int[][][] .... etc.

//基本类型模拟

int intNum = JMockData.mock(int.class);

int[] intArray = JMockData.mock(int[].class);

Integer integer = JMockData.mock(Integer.class);

Integer[] integerArray = JMockData.mock(Integer[].class);

//常用类型模拟

BigDecimal bigDecimal = JMockData.mock(BigDecimal.class);

BigInteger bigInteger = JMockData.mock(BigInteger.class);

Date date = JMockData.mock(Date.class);

String str = JMockData.mock(String.class);

2.Java对象mock
 

模拟bean,被模拟的数据最好是plain bean,通过反射给属性赋值。

支持模拟继承而来的属性。

@Data

public class Person {

    private String name;

    private Integer age;

    private String email;

}

 public static void main(String[] args) {

        Person person= JMockData.mock(Person.class);

        System.out.println(JSON.toJSONString(person));

  

    }

3.容器类型(LIST,SET,MAP)mock

@Test

//******注意TypeReference要加{}才能模拟******

public void testTypeRefrence() {

  //模拟基础类型,不建议使用这种方式,参考基础类型章节直接模拟。

  Integer integerNum = JMockData.mock(new TypeReference<Integer>(){});

  Integer[] integerArray = JMockData.mock(new TypeReference<Integer[]>(){});

  //模拟集合

  List<Integer> integerList = JMockData.mock(new TypeReference<List<Integer>>(){});

  //模拟数组集合

  List<Integer[]> integerArrayList = JMockData.mock(new TypeReference<List<Integer[]>>(){});

  //模拟集合数组

  List<Integer>[] integerListArray = JMockData.mock(new TypeReference<List<Integer>[]>(){});

  //模拟集合实体

  List<BasicBean> basicBeanList = JMockData.mock(new TypeReference<List<BasicBean>>(){});

  //各种组合忽略。。。。map同理。下面模拟一个不知道什么类型的map

  Map<List<Map<Integer, String[][]>>, Map<Set<String>, Double[]>> some = JMockData.mock(new TypeReference<Map<List<Map<Integer, String[][]>>, Map<Set<String>, Double[]>>>(){});

}

4.mock支持自定义配置

@Data

public class Person {

    private String name;

    private Integer age;

    private String email;

}

 public static void main(String[] args) {

        //基础类型数据mock配置

        MockConfig mockConfig = new MockConfig().intRange(1,10).globalConfig();

        int id =JMockData.mock(int.class, mockConfig);

        //java对象类型数据mock配置

        MockConfig mockConfig =

                new MockConfig()

                        .subConfig("age")

                        // 设置 int 的范围

                        .intRange(1100)

                        .subConfig("email")

                        // 设置生成邮箱正则

                        .stringRegex("[a-z0-9]{5,15}\\@\\w{3,5}\\.[a-z]{2,3}")

                        // 全局配置(还可以根据条件配置.subConfig)

                        .globalConfig();

        Person person = JMockData.mock(Person.class, mockConfig);

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值