Junit单元测试数据生成工具类
在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单元测试数据生成工具类的更多相关文章
- ZXing 二维码解析生成工具类
原文:http://www.open-open.com/code/view/1455848023292 import com.google.zxing.*; import com.google.zxi ...
- 验证码图片生成工具类——Captcha.java
验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载 Captcha.java) import java. ...
- 二维码生成工具类java版
注意:这里我不提供所需jar包的路径,我会把所有引用的jar包显示出来,大家自行Google package com.net.util; import java.awt.BasicStroke; im ...
- Java 二维码生成工具类
/** * 二维码 工具 * * @author Rubekid * */ public class QRcodeUtils { /** * 默认version */ public static fi ...
- java订单生成工具类
欢迎来到付宗乐个人博客网站.本个人博客网站提供最新的站长新闻,各种互联网资讯. 还提供个人博客模板,最新最全的java教程,java面试题.在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿 ...
- ImageUtil(验证码数据生成工具类)
登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt ...
- id生成工具类
import java.util.Random; /** * 各种id生成策略 * <p>Title: IDUtils</p> * <p>Description: ...
- Vcode的生成工具类,生成制定长度验证码,图文验证码工具类
public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...
- java图形验证码生成工具类及web页面校验验证码
最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善. 验证码生成器: import javax.imageio.ImageIO; import java.awt.*; import ja ...
随机推荐
- ASP.NET 页面控制
一.HTTPRequest对象封装客户端请求页面或提交表单时提供的信息 请求方法:get/post 参数名/值 Cookie 使用的语言二.Rquest对象常用方法与属性 属性: QueryStrin ...
- 爬虫最新的库requests-html库总结
requests-html是比较新的爬虫库,作者和requests是同一个作者 一.安装依赖 pip install requests-html 我们可以在安装的时候看到他安装了lxml,reuqes ...
- Java注解简单学习
注解(也被称作元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们在稍后某个时刻可以很方便的使用这些数据,其在一定程度上将元数据与源代码文件结合在一起,而不是保存在外部文档中. 注解使我们可以 ...
- 利用socket传递图片
package com.company.s3; import java.io.File; import java.io.FileOutputStream; import java.io.InputSt ...
- vue关于mock的简单使用
一.mock 1.简介 mock是一个模拟数据生成器,旨在帮助前端独立于后端进行开发,帮助编写单元测试.其可模拟 Ajax 并返回模拟数据,使前端不用去调用后端的接口,方便测试. 2.vue直接使用m ...
- Promise的使用
Promise的简单认识 Promise 是ES6中对异步编程的一种解决方案,可以避免出现回调地狱 Promise最基本的语法 new Promise((resolve, reject) => ...
- Ubuntu16.0 GTX1660Ti 安装NVIDIA CUDA cuDNN Tensflow
主要参考这篇文章Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!). 容易错的点: 安装NVIDIA驱动的时候选择run版本,不要选择de ...
- 【课件】git零基础快速入门实战--重点讲解,在实际生产中整合idea对版本、分支的管理等
1.git简单描述 git是重要的版本管理工具,几乎每个码农都有自己的git账号管理自己的代码,同时很多公司也是用git管理公司的代码, 因此掌握git在实际生产中的常规使用非常重要. 2.git学习 ...
- Saltstack_使用指南15_多master
1. 主机规划 实现2个master,当这两个master运行时都可以向minion发送命令. salt 版本 [root@salt100 ~]# salt --version salt (Oxyge ...
- 201871010116-祁英红《面向对象程序设计(java)》第八周学习总结
项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...