datafaker 伪造数据

646 阅读2分钟

datafaker 生成假数据

datafaker是Java和Kotlin用来生成假数据的库。这在生成测试数据以填充数据库、生成压力测试数据或匿名化生产服务数据时非常有用。

datafaker是java-faker的一个新分支,构建在java8上。提供生成假数据(如姓名,电话号码,时间和地址等)。

GitHub地址:github.com/datafaker-n…

官方文档:www.datafaker.net/documentati…

安装

Maven:

<dependency>
    <groupId>net.datafaker</groupId>
    <artifactId>datafaker</artifactId>
    <version>版本</version>
</dependency>

使用

默认使用

Faker的使用较为简单,创建一个Faker对象,调用对应的方法即可生成假数据

常用的方法:name(),phone(),date(),address(),color()等

import net.datafaker.Faker;

// 创建Faker对象
Faker faker = new Faker();

// 获取一个随机姓名
String name = faker.name().name(); // Alejandro Cronin

此处实例化的是English Locale对象的Faker

指定语言

Faker在创建时可以传入生成数据的语言Locale对象,默认为英语,要传入中文可以设置为new Locale("zh_CN")

// 创建中文的Faker对象
Faker faker = new Faker(new Locale("zh_CH"));
// 获取随机的中文名
String name = faker.name().name();
// 崔浩然

Locale对象中有许多语言的静态变量来设置语言,创建中文的Faker对象,还可以使用以下方法

// 设置简体中文
Faker faker1 = new Faker(Locale.SIMPLIFIED_CHINESE);

// 设置国家对应的语言
Faker faker2 = new Faker(Locale.CHINA);

// 获取此Java虚拟机实例的默认区域设置的当前值来来设置
Faker faker3 = new Faker(Locale.getDefault());

可重复结果

可提供一个带seed值的Random(int seed)的Faker,生成可预测的随机结果。

Faker faker = new Faker(new Random(1));

例子

生日

Faker faker = new Faker();

// 生成指定字符格式的生日
String birthday = faker.date().birthday("yyyy-MM-dd"); // 1958-12-24

// 生成从现在指定字符串格式的两个年龄间的生日
String birthday = faker.date().birthday(1, 2, "yyyy-MM-dd"); // 2021-01-25

日期

Faker faker = new Faker();

// 生成2022-10-11 00:00:00 到 2022-10-12 00:00:00的时间
String date =
        faker.date()
                .between(Timestamp.valueOf("2022-10-11 00:00:00"),
                Timestamp.valueOf("2022-10-12 00:00:00"),
                "yyyy-MM-dd HH:mm:ss"); // 2022-10-11 04:30:56

电话号码

Faker faker = new Faker(Locale.CHINA);

String cellPhone = faker.phoneNumber().cellPhone(); // 18463450170

地址

Faker faker = new Faker(Locale.CHINA);

String city = faker.address().city(); // 天津