Mock数据 – Java最好用的工具JMockData

JMockData Github地址:https://github.com/jsonzou/jmockdata

JMockData使用步骤

添加Maven依赖

<dependency>
            <groupId>com.github.jsonzou</groupId>
            <artifactId>jmockdata</artifactId>
            <version>4.3.0</version>
            <scope>compile</scope>
        </dependency>

随便弄一个实体类

@Data
public class CommonNameQuantityVO {
    private String communityName;

    private Integer processes;

    private Date date;
}

JMockData构造数据

public static void main(String[] args) {
        CommonNameQuantityVO mock = JMockData.mock(CommonNameQuantityVO.class);
        System.out.println(mock);
    }

输出测试结果

CommonNameQuantityVO(communityName=aPMCA, processes=2974, date=Fri Dec 24 16:37:38 CST 2060)

JMockData高级进阶

追加2个字段

private String QQEmail;

    private String zhangsanPhone;

构造Mock数据时添加一个条件约束

public static void main(String[] args) {
        MockConfig mockConfig = new MockConfig()
                .subConfig("*ate") // 指定字段名(忽略大小写)以ate结尾的数据范围控制
                .doubleRange(80.00, 100.00d) // double BigDecimal
                .floatRange(0.00f, 100.00f) // float
                .dateRange("2023-01-01", "2023-01-02")
                .globalConfig()

                // 手机号生成注意正则支持有限,不支持中文,
                .subConfig(CommonNameQuantityVO.class, "*tel", "*phone")
                .stringRegex("1[3]{1}[0-9]{2}[0-9]{8}")
                .globalConfig()

                // 指定某个对象的邮箱
                .subConfig(CommonNameQuantityVO.class, "QQEmail")
                //.stringRegex("[a-z0-9]{5,15}\\@\\w{3,5}\\.[a-z]{2,3}")
                .stringRegex("[a-z0-9]{5,15}\\@\\w{3,5}\\.com")
                .globalConfig()

                // subConfig返回对象是 DataConfig 需要调用globalConfig()才能继续配置其他字段,如果没指定字段则以全局为准
                .intRange(30, 60) // int范围
                .decimalScale(2); // 保留2位小数点,默认是2位
        CommonNameQuantityVO mock = JMockData.mock(CommonNameQuantityVO.class, mockConfig);
        System.out.println(mock);

测试高级进阶输出

CommonNameQuantityVO(communityName=mDKGSS, processes=30, date=Sun Jan 01 10:38:31 CST 2023, QQEmail=x15d7devedomf@Jd1.com, zhangsanPhone=130975739346)

字符串枚举解决方案

API中,是没有字符串的,我唯一能看到就是StringSeed,但是这个Seed配置后生成出来的数量不定,有的是4个凑出来一个,有的则是5个凑出来一个,这个数据令我们非常烦恼。我也是晚上准备放弃的时候,发现一个API sizeRange,通过这个就可以实现约束Seed的内容了!

    public static void main(String[] args) {
        MockConfig mockConfig = new MockConfig()
                .stringSeed("北京","东京","南京","无锡")
                .sizeRange(1,1)
                .globalConfig();
        for (int i = 0; i < 10; i++) {
            System.out.println(JMockData.mock(String.class, mockConfig));
        }
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
打赏收藏海报链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Jmockdata(再也不用苦逼的造测试数据了) Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据工具框架。单元测试的利器。     The plug-in of Jmockdata what through random algorithm mock java data.   Jmockdata插件通过随机算法模拟Java数据.   版本信息 Jmockdata-2.0 发布时间 2017-02-03 Jmockdata-1.0 发布时间 2017-01-04 具体介绍和用法可以参考如下:   0. 模拟数据入口方法 JMockData.mock(JmockDataWrapper) 1. 被模拟数据必须继承JmockDataWrapper经过它的包装 2. 被模拟的数据最好是plain bean,只提供getter,setter,has,is方法的才可以被模拟 3. 框架默认实现了40个元数据类型的数据模拟器包括:   byte.class,Byte.class,byte[].class,Byte[].class, short.class,Short.class,short[].class,Short[].class, int.class,Integer.class,int[].class,Integer[].class, long.class,Long.class,long[].class,Long[].class, float.class,Float.class,float[].class,Float[].class, double.class,Double.class,double[].class,Double[].class, boolean.class,Boolean.class,boolean[].class,Boolean[].class, char.class,Character.class,char[].class,Character[].class, String.class,String[].class, BigDecimal.class,BigDecimal[].class, BigInteger.class,BigInteger[].class, Date.class,Date[].class 通过对以上基本元数据类型的模拟实现,本框架可以轻松模拟由以上元数据结构组成的BEAN、LIST、SET、ARRAY等复杂深度的数据结构的数据模拟。   4. 可以通过JmockDataContext 获取模拟过程的所有上下文信息,甚至可以打印整个模拟类型树   5. 可以通过JMockDataManager 注册模拟数据类型,重写模拟数据算法,注册模拟数据类拦截器等 6. 可以通过实现MockData来实现一个模拟数据类型 7. 可以通过实现JmockDataTemplate,或者继承JmockDataTemplateDefault来重写模拟数据算法 8. 可以通过实现JmockDataInterceptor来实现一个拦截器 9. 具体示例实践请参考https://github.com/jsonzou/jmockdata-demo 10. 有问题或者对本框架有新的想法,请联系我, 作者:jsonzou 标签:Jmockdata

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值