前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 单元测试生成测试字符串的神器:java-faker

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

作者头像
明明如月学长
发布2021-08-31 14:59:24
1.7K0
发布2021-08-31 14:59:24
举报
文章被收录于专栏:明明如月的技术专栏

一、背景

Java的单元测试经常需要构造各种测试数据,其中一项就是构造测试的字符串。

如果我们想要随机构造人名、地名、天气、学校、颜色、职业,甚至符合某正则表达式的字符串等,肿么办?

那么有一个库叫 java-fake 可以实现这个功能。

二、介绍

源码地址: https://github.com/DiUS/java-faker

依赖:

maven中添加pom依赖

代码语言:javascript
复制
    com.github.javafaker
    javafaker
    1.0.0

gradle添加

代码语言:javascript
复制
dependencies {
    implementation 'com.github.javafaker:javafaker:1.0.0'
}

基本用法

代码语言:javascript
复制
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

该框架支持多种语言,默认是英文。

可以通过此代码指定语言:

代码语言:javascript
复制
Faker faker = new Faker(new Locale("YOUR_LOCALE"));

如果是中文:zh-CN

结果:

赖思淼 洪煜祺 熊巷280号 black-->#2838F8 西北大学-->西:经贸大学

支持正则

代码语言:javascript
复制
 @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

三、总结

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、介绍
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档