Test data simulation generation
1. javafaker simulated data
1. Add dependencies
<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 class
@Data
public class Student {
private String name;
private double score;
}
3. Simulation data
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());
}
}
Two, data-factory components
2. The DataUtil tool class generates random simulation data
@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. Use the @DataFactory annotation
- min & max the largest and smallest number
- minLen & maxLen the maximum and minimum string length
- ignore ignore
- precision floating-point data precision
- data specifies the generation strategy
- regex specifies a regular expression
@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}
}
}