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

一、背景

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

三、总结

单元测试构造数据非常费时费力,多留意一些帮助测试的库,能够极大提交效率。

 

创作不易,如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

 

--------------------------------------------

我在参见 CSDN 1024 程序员活动(2019年10月24日截止)

如果我的博客对你有帮助,且有时间,欢迎浏览器后者微信扫码,帮我点赞支持我:

 
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明如月学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值