测试数据模拟生成
一、javafaker 模拟数据
1、添加依赖
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>0.17.2</version>
</dependency>
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>data-factory-core</artifactId>
<version>0.0.8</version>
</dependency>
2、Bean类
@Data
public class Student {
private String name;
private double score;
}
3、模拟数据
public class MockDataTest {
private static Faker FAKER = new Faker(Locale.CHINA);
@Test
public void testTaskInfo(){
System.out.println("TaskInfoDTO");
TaskInfoDTO mockeBean = DataUtil.build(TaskInfoDTO.class);
System.out.println(JSONUtil.toJsonPrettyStr(mockeBean));
}
}
public class ModelFactory {
private static Faker FAKER = new Faker(Locale.CHINA);
public static List<Student> listStudentList(final int number) {
return Stream.generate(() -> new Student(
FAKER.name().fullName(),
FAKER.number().randomDouble(2, 1, number)))
.limit(number).collect(Collectors.toList());
}
}
二、data-factory组件
2、DataUtil工具类生成随机模拟数据
@Data
public class User {
private String name;
private int age;
private Date birthday;
private List<String> stringList;
private StatusEnum statusEnum;
private Map<String, String> map;
}
3、使用@DataFactory注解
- min & max 数字最大和最小
- minLen & maxLen 字符串长度的最大和最小
- ignore 忽略
- precision 浮点型数据精度
- data 指定生成策略
- regex 指定正则表达式
@Data
public class UserAnnotationNumber {
@DataFactory(min = 10, max = 20)
private Byte aByte;
@DataFactory(min = 10, max = 20)
private Short aShort;
@DataFactory(min = 10, max = 20)
private Integer integer;
@DataFactory(min = 10, max = 20)
private Long aLong;
@DataFactory(min = 10, max = 20, precision = 3)
private Double aDouble;
@DataFactory(min = 10, max = 20, precision = 3)
private Float aFloat;
@DataFactory(min = 10, max = 20, precision = 3)
private BigDecimal bigDecimal;
@DataFactory(min = 10, max = 20)
private BigInteger bigInteger;
}
public class FakeDataDemo{
public void demo(){
DataUtil.build(UserAnnotationNumber.class)
UserAnnotationNumber{
aByte=10, aShort=17, integer=19, aLong=11,
aDouble=19.888, aFloat=10.067, bigDecimal=18.035, bigInteger=13}
}
}