package com.xxx.common.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*; /**
* 测试某些非空数据使用
* @author xw
*/
public class MockUtil {
private static double curD = 100.1; private static float curF = 10000.2f; private static int curInt = 1; private static long curL = 1000; private static int curS = 1; private static String[] rs = new String[] { "A", "C", "D", "E", "F", "J", "H", "I", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "a", "c", "d", "e", "f", "j", "h", "i", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "f" }; private static String getFieldName(String methodName) {
String s = "set";
String ups = methodName.toLowerCase();
String key = null;
if (ups.indexOf(s) != -1) {
key = ups.substring(s.length());
}
return (key == null) ? null : key;
} public static <T> T getJavaBean(Class<T> c) { T object = null;
List<Method> allMethods = new ArrayList<Method>();
List<Field> allFields = new ArrayList<Field>();
try {
object = c.newInstance();
Method[] methods = c.getDeclaredMethods();
Field[] fields = c.getDeclaredFields();
allMethods.addAll(Arrays.asList(methods));
allFields.addAll(Arrays.asList(fields));
Class superClass = c.getSuperclass();
while (superClass != null) {
allMethods.addAll(Arrays.asList(superClass.getDeclaredMethods()));
allFields.addAll(Arrays.asList(superClass.getDeclaredFields()));
superClass = superClass.getSuperclass();
}
for (Method m : allMethods) {
if (m.getName().indexOf("set") != -1) {
String field = getFieldName(m.getName());
String type = "string";
for (Field f : allFields) {
if (f.getName().toLowerCase().equals(field)) {
type = f.getType().getSimpleName();
break;
}
}
m.invoke(object, new Object[] { getValue(type) });
}
} } catch (Exception e) {
// e.printStackTrace();
}
return object;
} public static String getRand(int size) {
Random random = new Random();
String rvs = "";
for (int i = 0; i < size; i++) {
int status = random.nextInt(size);
if (status < rs.length && status > 0) {
rvs += rs[status];
}
else {
rvs += "A";
} }
return rvs;
} private static Object getValue(String s) {
Object temp = null;
String st = s.toLowerCase();
Random random = new Random(10010);
if (st.equals("int") || st.equals("integer")) {
temp = curInt;
curInt++;
}
else if (st.equals("long")) {
temp = curL;
curL++;
}
else if (st.equals("string")) {
temp = curS + getRand(6);
curS++;
}
else if (st.equals("double")) {
temp = curD;
curD++;
}
else if (st.equals("float")) {
temp = curF;
curF++;
}
else if (st.equals("boolean")) {
temp = random.nextBoolean();
}
else if (st.equals("date")) {
temp = new Date();
}
return (temp == null) ? null : (temp);
}
}

  mock 数据使用工具

Mock数据使用的Util的更多相关文章

  1. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据

    § 封装网络请求及 mock 数据 本文配套视频地址: https://v.qq.com/x/page/i05544fogcm.html 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发 ...

  2. vue-cli项目中怎么mock数据

    在vue项目中, mock数据可以使用 node 的 express模块搭建服务 1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data ...

  3. json-server mock数据

    前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...

  4. vue-cli项目使用mock数据的方法(借助express)

    前言 现如今前后端分离开发越来越普遍,前端人员写好页面后可以自己模拟一些数据进行代码测试,这样就不必等后端接口,提高了我们开发效率.今天就来分析下前端常用的mock数据的方式是如何实现的. 主体 项目 ...

  5. Vue CLI 3.0脚手架如何在本地配置mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的模式开发肯定是离不开前端的数据模拟阶段. 我们在开发的过程中,由于后台接口的没有完成或 ...

  6. vue admin mock数据

    搭建脚手架axios访问不到接口:mock数据的问题mock下的index.js设置了默认指向

  7. fiddler安装及mock数据

    1,fiddler安装,解决无法抓到https问题 可用本机的火狐浏览器测试,不行,就fiddler生成证书,拷到火狐里 在firefox中,选项->进入配置界面:高级-> 证书 -> ...

  8. 关于vue-cli创建项目(小白)(2)mock数据

    mock数据,好处,前后端分离,不用等后端的真实接口,就可以用axios(ek sju s 好像这么读,原谅本人总是根据读音写单词)请求数据了. 一,安装所需插件 根据不同需求选择安装环境,mockj ...

  9. nodejs构建mock数据

    Nodejs构建mock数据并通过rest api风格调用接口访问数据 如果我们只有json格式的数据文件,我们想通过访问url方式调用居然数据 确保电脑安装node环境 如果你没有安装好node环境 ...

随机推荐

  1. 阿里云64位centos6.3系统上编译安装redis

    环境 系统:阿里云64位centos 6.3 [rao@AY~]$ cat /etc/issue CentOS release 6.3 (Final) Kernel \r on an \m [rao@ ...

  2. 猫猫学iOS之UITextField右边设置图片,以及UITextField全解

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果: 封装好的方法: 猫猫封装的一个小方法,简单共享出来,方便 ...

  3. jsp页面数据回显(select下拉选择框)

    1.静态变量方式: <!-- 实现select标签回显 --> 1.<select name="curStatus" value="${curStatu ...

  4. Android - Animation(二)

    Android - Animation(一) 一文总结了Android中的补间动画(View Animation/Tween Animation)和帧动画(Drawable Animation/Fra ...

  5. TestNG 六 测试结果

    一.成功.失败和断言 如果一个测试没有抛出任何异常就完成运行或者说抛出了期望的异常(参见@Test注解的expectedExceptions属性文档),就说,这个测试时成功的. 测试方法的组成常常包括 ...

  6. 在笛卡尔坐标系上描绘函数(x*x+1)/(x*x-1)曲线

    代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...

  7. 引用类型之object和date详解

    引用类型的值是引用类型的实例,js中的引用类型是一种数据类型,用于将数据和功能组织在一起(也可叫对象定义,因为描述一类对象具有的属性和方法) 1.Object类型 大多数引用类型都是object类型, ...

  8. okhttp-OkGo的文件下载模块

    OkDownload主要功能 结合OkGo的request进行网络请求,支持与OkGo保持相同的配置方法和传参方式 支持断点下载,支持突然断网,强杀进程后,继续断点下载 每个下载任务具有无状态.下载. ...

  9. WebDriver API——第2部分Exceptions

    Exceptions that may happen in all the webdriver code. exception selenium.common.exceptions.ElementNo ...

  10. Can rename table but can not truncate table

    一个表无法truncate可是能够rename,这个乍听起来认为好奇怪,以下模拟该过程. 3个session: session1运行truncate和rename操作. session2运行lock表 ...