小言_互联网的博客

Java 单元测试生成测试字符串的神器:java-faker

309人阅读  评论(0)

一、背景

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场