一、背景
Java的单元测试经常需要构造各种测试数据,其中一项就是构造测试的字符串。
如果我们想要随机构造人名、地名、天气、学校、颜色、职业,甚至符合某正则表达式的字符串等,肿么办?
那么有一个库叫 java-fake 可以实现这个功能。
二、介绍
源码地址: https://github.com/DiUS/java-faker
依赖:
maven中添加pom依赖
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.0</version>
</dependency>
gradle添加
dependencies {
implementation 'com.github.javafaker:javafaker:1.0.0'
}
基本用法
Faker faker = new Faker();
String name = faker.name().fullName(); // Miss Samanta Schmidt
String firstName = faker.name().firstName(); // Emory
String lastName = faker.name().lastName(); // Barton
String streetAddress = faker.address().streetAddress(); // 60018 Sawayn Brooks Suite 449
该框架支持多种语言,默认是英文。
可以通过此代码指定语言:
Faker faker = new Faker(new Locale("YOUR_LOCALE"));
如果是中文:zh-CN
结果:
赖思淼
洪煜祺
熊巷280号
black-->#2838F8
西北大学-->西:经贸大学
支持正则
@Test
public void bothifyShouldGenerateLettersAndNumbers() {
assertThat(faker.bothify("????##@gmail.com"), matchesRegularExpression("\\w{4}\\d{2}@gmail.com"));
}
@Test
public void letterifyShouldGenerateLetters() {
assertThat(faker.bothify("????"), matchesRegularExpression("\\w{4}"));
}
@Test
public void letterifyShouldGenerateUpperCaseLetters() {
assertThat(faker.bothify("????",true), matchesRegularExpression("[A-Z]{4}"));
}
@Test
public void letterifyShouldLeaveNonSpecialCharactersAlone() {
assertThat(faker.bothify("ABC????DEF"), matchesRegularExpression("ABC\\w{4}DEF"));
}
更多用法建议拉取源码,看其单元测试代码,非常丰富。
此框架虽然可以构造各种字符串,但是构造整个复杂对象或者集合就有些力不从心,这时就需要另外一个强大的工具:easy-random https://github.com/j-easy/easy-random
三、总结
单元测试构造数据非常费时费力,多留意一些帮助测试的库,能够极大提交效率。
创作不易,如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。
转载:https://blog.csdn.net/w605283073/article/details/97441913
查看评论