# TestDataGenerator
**Repository Path**: colorlife/TestDataGenerator
## Basic Information
- **Project Name**: TestDataGenerator
- **Description**: 测试数据生成器
- **Primary Language**: Java
- **License**: MPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 1
- **Created**: 2020-07-09
- **Last Updated**: 2025-02-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TestDataGenerator
#### 介绍
### TestDataGenerator能做什么?
> 接口写好了在测试POST或者PUT类型的接口的时候是不是感觉很难造(懒,不想动 :stuck_out_tongue_winking_eye: )JSON数据?
测试数据生成器能够解决你这个问题。
TestDataGenerator又名测试数据生成器,采用随机算法,可以根据策略生成不同类型的数据。只需要你确定了待测试数据的实体Java类,调用方法生成即可。例如:员工类中有String 类型的属性,可以随机生成null或者""这样的数据.
>目前已经实现的默认策略类型如下表所示:
| 类型 | 策略类 | 说明 |
|--------|----------------|------------------------------------------------------------------------|
| String | StringStrategy | 默认数据为null, "", " ", "123123123123"组合,如果使用Length注解,则会在min和max中取拼接长度的边界值 |
| Integer| IntegerStringStrategy| 默认数据为Integer.MIN_VALUE, -1, 0, 1, 256, Integer.MAX_VALUE组合,如果使用Range注解,则会增加max的边界值 |
| Double | DoubleStrategy | 默认数据为Double.MIN_VALUE, -1.0, 0.00, 1.00, 100.01, Double.MAX_VALUE |
| Boolean| BooleanStrategy| 默认数据为Boolean.FALSE, null, Boolean.TRUE |
| Date | DateStrategy| 默认数据为返回当前时间 |
| Enum | EnumStrategy| 默认数据为根据定义的枚举随机返回一个枚举的名称 |
| List | ListStrategy| 默认数据为根据定义的泛型随机返回一个泛型对象 |
| 以上类型都不匹配 | DefaultStrategy| 默认数据为null |
什么?感觉上面的生成策略不符合你的需求?
没关系,你可以自己扩展策略或者替换默认策略,通过实现Strategy方法即可,详细使用请参考使用说明章节中的扩展调用内容。
---
#### 安装教程
1. 下载代码到本地
2. IDEA需要安装lombok插件,导入本项目
3. IDEA内拉取项目Maven依赖包
4. Maven打包install到本地maven仓库
5. 在你的Java项目的pom文件中添加如下maven依赖
```
com.colorlife
TestDataGenerator
0.1
```
#### 使用说明
1. #### 普通调用
**TestUtil.getTestJsonData()** 静态方法即可生成测试Json数据,默认生成10条( **都是控制台输出** ).因为采用随机算法,如果生成的数据有偏差,调用多次即可.
下图为项目中员工类测试产生的数据.

2. #### 扩展调用
**TestUtil.extendStrategy()** 方法可以扩展你自定义的策略,如果需要扩展,调用生成数据方法 **TestUtil.getTestJsonData()** 前需要先调用该方法(如下所示).
```
Map strategyMap =new HashMap<>();
strategyMap.put("default",new DefaultStrategy());
TestUtil.extendStrategy(strategyMap);
TestUtil.getTestJsonData(Employee.class);
```