MockData API
技术框架
JMockData 是一款国人开发用来生成模拟数据的工具
基础类型
| 描述 | 类型 |
|---|---|
| 基础类型 | 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. |
java
1//基本类型模拟
2int intNum = JMockData.mock(int.class);
3int[] intArray = JMockData.mock(int[].class);
4Integer integer = JMockData.mock(Integer.class);
5Integer[] integerArray = JMockData.mock(Integer[].class);
6//常用类型模拟
7BigDecimal bigDecimal = JMockData.mock(BigDecimal.class);
8BigInteger bigInteger = JMockData.mock(BigInteger.class);
9Date date = JMockData.mock(Date.class);
10String str = JMockData.mock(String.class);JAVA对象
模拟bean,被模拟的数据最好是plain bean,通过反射给属性赋值。
java
1public class User {
2
3 private String name;
4
5 private int age;
6
7 private long cardId;
8
9}java
1 @Test
2 public void test() {
3 User mock = JMockData.mock(User.class);
4 // User{name='jrq2b', age=9338, cardId=2850}
5 System.out.println(mock);
6 }容器类型
java
1@Test
2//******注意TypeReference要加{}才能模拟******
3public void testTypeRefrence() {
4 //模拟基础类型,不建议使用这种方式,参考基础类型章节直接模拟。
5 Integer integerNum = JMockData.mock(new TypeReference<Integer>(){});
6 Integer[] integerArray = JMockData.mock(new TypeReference<Integer[]>(){});
7 //模拟集合
8 List<Integer> integerList = JMockData.mock(new TypeReference<List<Integer>>(){});
9 //模拟数组集合
10 List<Integer[]> integerArrayList = JMockData.mock(new TypeReference<List<Integer[]>>(){});
11 //模拟集合数组
12 List<Integer>[] integerListArray = JMockData.mock(new TypeReference<List<Integer>[]>(){});
13 //模拟集合实体
14 List<BasicBean> basicBeanList = JMockData.mock(new TypeReference<List<BasicBean>>(){});
15 //各种组合忽略。。。。map同理。下面模拟一个不知道什么类型的map
16 Map<List<Map<Integer, String[][]>>, Map<Set<String>, Double[]>> some = JMockData.mock(new TypeReference<Map<List<Map<Integer, String[][]>>, Map<Set<String>, Double[]>>>(){});
17}范围配置
前面说了可以模拟各种数据,不同类型的数据都允许指定一个范围。 如下
java
1System.out.println(
2JMockData.mock(Date.class,MockConfig.newInstance()
3.dateRange("2018-11-20", "2018-11-30")));java
1 MockConfig mockConfig = new MockConfig()
2 // 全局配置
3 .globalConfig()
4 .setEnabledStatic(false)
5 .setEnabledPrivate(false)
6 .setEnabledPublic(false)
7 .setEnabledProtected(false)
8 .sizeRange(1, 1)
9 .charSeed((char) 97, (char) 98)
10 .byteRange((byte) 0, Byte.MAX_VALUE)
11 .shortRange((short) 0, Short.MAX_VALUE)
12 // 某些字段(名等于integerNum的字段、包含float的字段、double开头的字段)配置
13 .subConfig("integerNum", "*float*", "double*")
14 .intRange(10, 11)
15 .floatRange(1.22f, 1.50f)
16 .doubleRange(1.50, 1.99)
17 .longRange(12, 13)
18 .dateRange("2018-11-20", "2018-11-30")
19 .stringSeed("SAVED", "REJECT", "APPROVED")
20 .sizeRange(1, 1)
21 // 全局配置
22 .globalConfig()
23 // 排除所有包含list/set/map字符的字段。表达式不区分大小写。
24 .excludes("*List*", "*Set*", "*Map*");