在Junit单元测试中,经常需要对一些领域模型的属性赋值,以便传递给业务类测试,常见的场景如下:

 com.enation.javashop.Goods goods = new  com.enation.javashop.Goods();
goods.setBrandId(1);
goods.setCategoryId(1);
goods.setGoodsName("测试商品");
goods.setPrice(1.01);
goods.setSn("100001");
goods.setWeight(1.01);

  

如果领域模型的属性特别多,手工去写set方法令人发指,写了一个生成的工具类,用法如下:

String mockCode = MockDataGenerator.create(Goods.class);

 

生成结果:

com.enation.javashop.Goods goods = new com.enation.javashop.Goods();
goods.setBrandId(819);
goods.setCategoryId(109);
goods.setCost(1.01);
goods.setGoodsId(970);
goods.setGoodsName("random_str748");
goods.setGoodsTransfeeCharge(164);
goods.setHaveSpec(506);
goods.setIntro("random_str344");
goods.setMarketEnable(878);
goods.setMktprice(1.01);
goods.setPrice(1.01);
goods.setSn("random_str316");
goods.setWeight(1.01);

  

工具类代码:

package com.enation.app.javashop.saas;

import com.enation.app.javashop.framework.util.StringUtil;
import org.springframework.beans.BeanUtils; import java.beans.PropertyDescriptor; /**
* 模拟数据生成器
* @author kingapex
* @version 1.0
* @since 7.1.0
* 2019-08-06
*/ public class MockDataGenerator { public static String create(Class clz) { StringBuffer mockStr = new StringBuffer(); PropertyDescriptor[] propertyDescriptors = BeanUtils.getPropertyDescriptors(clz);
String objName = clz.getSimpleName();
char[] chars =objName.toCharArray();
chars[0]+=32;
objName = String.valueOf(chars);
mockStr.append(clz.getName() + " "+ objName+" = new "+ clz.getName() +"();\n");
for (PropertyDescriptor descriptor : propertyDescriptors) {
if (descriptor.getWriteMethod() != null) { String name = descriptor.getWriteMethod().getName();
String value = createValue( descriptor.getPropertyType());
mockStr.append(objName + "." + name + "(" + value + ");\n"); } } return mockStr.toString();
} private static String createValue( Class clz) { if (clz.equals(java.lang.Integer.class)) {
return StringUtil.getRandStr(3);
} if (clz.equals(java.lang.Double.class)) {
return "1.01";
} if (clz.equals(java.lang.String.class)) {
return "\"random_str"+ StringUtil.getRandStr(3)+"\"";
} return "";
} }

Junit单元测试数据生成工具类的更多相关文章

  1. ZXing 二维码解析生成工具类

    原文:http://www.open-open.com/code/view/1455848023292 import com.google.zxing.*; import com.google.zxi ...

  2. 验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载  Captcha.java) import java. ...

  3. 二维码生成工具类java版

    注意:这里我不提供所需jar包的路径,我会把所有引用的jar包显示出来,大家自行Google package com.net.util; import java.awt.BasicStroke; im ...

  4. Java 二维码生成工具类

    /** * 二维码 工具 * * @author Rubekid * */ public class QRcodeUtils { /** * 默认version */ public static fi ...

  5. java订单生成工具类

    欢迎来到付宗乐个人博客网站.本个人博客网站提供最新的站长新闻,各种互联网资讯. 还提供个人博客模板,最新最全的java教程,java面试题.在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿 ...

  6. ImageUtil(验证码数据生成工具类)

    登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt ...

  7. id生成工具类

    import java.util.Random; /** * 各种id生成策略 * <p>Title: IDUtils</p> * <p>Description: ...

  8. Vcode的生成工具类,生成制定长度验证码,图文验证码工具类

    public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...

  9. java图形验证码生成工具类及web页面校验验证码

    最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善. 验证码生成器: import javax.imageio.ImageIO; import java.awt.*; import ja ...

随机推荐

  1. Idea2019激活码

    此教程仅用作个人学习,请勿用于商业获利,造成后果自负!!! 此教程已支持最新2019.2版本 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: idea官网下载地址:http:/ ...

  2. Winform中怎样在工具类中对窗体中多个控件进行操作(赋值)

    场景 需求是在窗体加载完成后掉用工具类的方法,工具类中获取窗体的多个控件对象进行赋值. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 ...

  3. 为Bootstrap Modal(模态框)全局添加拖拽操作

    在js中绑定方法 $(document).on("show.bs.modal", ".modal", function(){ $(this).draggable ...

  4. Python爬虫,你是否真的了解它?

    程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚“你是干什么的”也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下“爬虫工程师”的工作 ...

  5. Flask 教程 第五章:用户登录

    本文翻译自The Flask Mega-Tutorial Part V: User Logins 这是Flask Mega-Tutorial系列的第五部分,我将告诉你如何创建一个用户登录子系统. 你在 ...

  6. JavaScript 字符串是否包含某个字符串

    字符串方式 indexOf()   (推荐) var str = "123"; console.log(str.indexOf("3") != -1 ); // ...

  7. docker redis使用

    启动方式一:docker默认启动redis 1.拉取镜像 docker pull redis:lastest (若不使用版本号,如docker pull redis,默认拉取最新镜像) 2.启动red ...

  8. 【JDBC】C3P0连接池的使用

    C3P0连接池的c3p0-config.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p ...

  9. 北航软件学院Java历届期末考题整理

    文章目录 abstract static Thread finally package Exception I/O 子类和父类 关键字 标识符 垃圾收集 数据类型 环境配置 网路编程 initial ...

  10. DataPump遭遇ORA-06512&ORA-39080&ORA-01403错误案例

    最近使用数据泵(DataPump)比较多,遇到了奇奇怪怪的问题,似乎Apply了补丁PSU 10.2.0.5.180717后,DataPump的问题就格外多.如下所示: expdp system/xx ...