テストデータのシミュレーション生成
1. 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());
}
}
2 つのデータ ファクトリ コンポーネント
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 文字列の最大長と最小長
- 無視する 無視する
- 浮動小数点データの精度
- データは生成戦略を指定します
- 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}
}
}