前言:

在日常的测试中,我们经常需要提前准备一大堆测试数据,用来验证业务逻辑。当然对于简单的数据类型完全可以通过 JDK 自带的 Random 类来或是用jmockdata。但是对于一个比较复杂的类,或者参数的格式有特殊要求的时候,Random 或是jmockdata就不适用了,这个时候就可以借助java-faker生成测试数据。

Java Faker源码地址:https://github.com/DiUS/java-faker/blob/master/README.md

一、引入jar包

      maven:

<dependency><groupId>com.github.javafaker</groupId><artifactId>javafaker</artifactId><version>1.0.2</version>
</dependency>

     gradle:

dependencies {implementation 'com.github.javafaker:javafaker:1.0.2'
}

二、应用实例

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class IconStatisticsControllerTest {@Resourceprivate ProjectApplyDao projectApplyDao;@Testpublic void testQueryAllDept() throws Exception {Faker faker = new Faker(Locale.CHINA); //1 创建Faker并指定为中文,支持各种语言List<ProjectApply> projectList = new ArrayList<>();for (int i = 0; i < 100; i++) {ProjectApply projectApply = new ProjectApply(); //2 创建model对象projectApply.setInstanceId(faker.code().ean8());projectApply.setFormId("");projectApply.setRaskMark("rask_mark");projectApply.setFlowClass("项目创建");projectApply.setTitle("项目创建");projectApply.setOrgId(faker.code().asin()); //3 利用faker对象生成各类型字段projectApply.setOrgType("部门");projectApply.setOrgName(faker.company().name());projectApply.setApplyDate(DateUtils.getDateTime());projectApply.setApplyUsername(faker.name().username());projectApply.setApplyState(0);projectApply.setApplyResult("通过");projectApply.setRemarks("备注");projectApply.setCreateUserId(faker.code().ean13());projectApply.setCreateUserName(faker.name().username());projectApply.setCreateTime(DateUtils.getDateTime());projectApply.setIsDelete(0);projectList.add(projectApply);}projectApplyDao.saveAll(projectList); // 4、将生成的model对象存储到数据库}}

上述的set方法可以用Alt + Enter快捷键一键生成

  

三、Faker 使用步骤

  1. 创建 faker 对象
  2. 通过 faker 对象获得要生成的实体对象
  3. 调用实体对象获得对于生成的部分

这里的实体对象,对应上面的 name,也就说我们要生成姓名相关的数据,拿到实体对象后还可以只获得其中的部分数据,比如姓名中的姓或名,还有前缀,甚至血型,可以说是非常全面。

而且 java-faker 支持的实体对象特别的多,如下:

  • Address
  • Ancient
  • Animal
  • App
  • Aqua Teen Hunger Force
  • Artist
  • Avatar
  • Back To The Future
  • Aviation
  • Basketball
  • Beer
  • Bojack Horseman
  • Book
  • Bool
  • Business
  • ChuckNorris
  • Cat
  • Code
  • Coin
  • Color
  • Commerce
  • Company
  • Crypto
  • DateAndTime
  • Demographic
  • Disease
  • Dog
  • DragonBall
  • Dune
  • Educator
  • Esports
  • File
  • Finance
  • Food
  • Friends
  • FunnyName
  • GameOfThrones
  • Gender
  • Hacker
  • HarryPotter
  • Hipster
  • HitchhikersGuideToTheGalaxy
  • Hobbit
  • HowIMetYourMother
  • IdNumber
  • Internet
  • Job
  • Kaamelott
  • LeagueOfLegends
  • Lebowski
  • LordOfTheRings
  • Lorem
  • Matz
  • Music
  • Name
  • Nation
  • Number
  • Options
  • Overwatch
  • PhoneNumber
  • Pokemon
  • Princess Bride
  • Relationship Terms
  • RickAndMorty
  • Robin
  • RockBand
  • Shakespeare
  • SlackEmoji
  • Space
  • StarTrek
  • Stock
  • Superhero
  • Team
  • TwinPeaks
  • University
  • Weather
  • Witcher
  • Yoda
  • Zelda

从身份证到姓名再到地址、动物、书籍、头像、职位等等,基本上覆盖了我们生活中的方方页面。

另外,java-faker 更贴心的是帮我们实现了国际化,可能刚才看了姓名的例子,有些朋友觉得这个框架好看但不好用,就拿生成姓名来说,生成都是 Johnston、Tom、Kiwi 之类英文名,在国内很少用到这些数据。其实java-faker 已经考虑到这个问题。而且只要改一行代码就可以了。

四、不同国家语言支持

如使用中文 将Faker faker = new Faker(); 改成 Faker faker = new Faker(Locale.CHINA);

如果你想生成其它国家的内容也是可以的,java-faker 支持的国家如下:

  • bg
  • ca
  • ca-CAT
  • da-DK
  • de
  • de-AT
  • de-CH
  • en
  • en-AU
  • en-au-ocker
  • en-BORK
  • en-CA
  • en-GB
  • en-IND
  • en-MS
  • en-NEP
  • en-NG
  • en-NZ
  • en-PAK
  • en-SG
  • en-UG
  • en-US
  • en-ZA
  • es
  • es-MX
  • fa
  • fi-FI
  • fr
  • he
  • hu
  • in-ID
  • it
  • ja
  • ko
  • nb-NO
  • nl
  • pl
  • pt
  • pt-BR
  • ru
  • sk
  • sv
  • sv-SE
  • tr
  • uk
  • vi
  • zh-CN
  • zh-TW

Java Faker 测试数据神器相关推荐

  1. Java虚拟机性能管理神器 - VisualVM(2) 入门

    一下载VisualVM 最新版本下载 历史版本下载 二启动VisualVM 三VisualVM用户目录 四VisualVM窗口 1应用程序窗口 2详情窗口 五VisualVM插件 Java虚拟机性能管 ...

  2. idea 查看jsp是否被引用_IDEA集成Java性能分析神器JProfiler

    阅读文本大概需要10分钟. <eclipse集成Java性能分析神器JProfiler>讲解了eclipse集成Jprofiler,这篇讲解一下IDEA如何集成JProfiler. 1.在 ...

  3. Java面试通关神器,冲鸭,进大厂!

    Java面试通关神器:涵盖Java+分布式+框架+数据库+Redis缓存+线程等 该内容包含了入门级 Java 程序员和多年经验的高级开发者的问题.无论你是 1.2.3.4.5.6.7.8.9 还是 ...

  4. java化测试神器-流量回放平台

    # java化测试神器-流量回放平台 作者:佳晖,荣荣 文章结构 基本介绍 使用流程 实现方案 总结 基本介绍 背景 目前公司正在进行php java化迁移工作. Java化测试本质上是一次回归工作. ...

  5. java web打包神器_前端开发人员的桌面应用神器 Electron

    原标题:前端开发人员的桌面应用神器 Electron 01 为什么用 Java 来开发桌面应用? 曾经的 Java 脆弱.简陋.甚至有被边缘化的危险,不过 Java 在经过了两次飞跃后(以 V8 为首 ...

  6. 发现一款自学Java可视化工具神器,非常牛逼,太爱了!

    最近发现一款Java自学神器,超级牛逼,今天分享给大家. 介绍 Codegym 是一个以 Java 为中心的平台,它比其他平台上都要更加深入的介绍 Java,这个网站将理论和实践知识相结合,你可以在上 ...

  7. Java性能分析神器-JProfiler详解(一)

    前段时间在给公司项目做性能分析,从简单的分析Log(GC log, postgrep log, hibernate statitistic),到通过AOP搜集软件运行数据,再到PET测试,感觉时间花了 ...

  8. 几个实用的IDEA插件 Java开发辅助神器!

    微信公众号:Java随笔录 关注可了解更多Java相关的技术分享.问题或建议,欢迎公众号留言! 如果你觉得JiangNanMax对你有帮助,欢迎赞赏! 文章目录 JRebel for IntelliJ ...

  9. 一款Java字节码神器-jclasslib bytecode viewer

    一.前言 相信很多学习Java的小伙伴都很好奇编译后的class文件里面的内容到底长什么样?我们都知道class文件里面存储的是字节码,直接打开文件是一堆乱码,所以我们需要一些工具来帮助我们去查看字节 ...

最新文章

  1. Java练习 SDUT-1132_斐波那契数列
  2. 静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
  3. Boost:align overflow对齐溢出的测试程序
  4. matlab怎么调整子图间距,matplotlib调整子图间距,调整整体空白的方法
  5. 双城生活,一种相对无奈且幸福的选择
  6. 除了PS,原来这个也可以轻松实现图像处理!
  7. Hibernate的关联映射--一对多、
  8. linux 自动安装 yum,LINUX6安装YUM仓库和实现开机自动挂载
  9. 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理
  10. 用python的正则表达式实现简单的计算器功能
  11. 编程函数c语言,C语言编程(练习1:函数 )
  12. 关于控件开发的几点意见
  13. sql联接查询_SQL联接
  14. cron表达式解析生成网站
  15. 计算机系统优化的方法.,20种优化电脑开机速度方法!
  16. 振动试验条件及试验标准
  17. 计算机图表制作教程,echarts入门教程 5分钟上手制作ECharts图表
  18. 106短信平台如何申请?申请周期是多久?
  19. 当公路的规则与秩序,被昇腾AI时刻守护
  20. python计算导数_python计算导数并绘图的实例

热门文章

  1. mac android手机 来电,CES2018 | 在电脑接听手机来电上 戴尔对苹果安卓一视同仁
  2. javascript毫秒计时器_JavaScript 计时器函数用法
  3. 软考高级哪个含金量高?哪个简单?
  4. 幻塔html5,《幻塔》祝玩家节日快乐,《原神》意外“躺枪”,米哈游这波真冤...
  5. 【leetcode买卖股票系列问题】多次买卖/手续费/冻结期
  6. python二叉树中序遍历迭代法
  7. 苹果6s解除耳机模式_【玩码】没想到,iPhone 也有取消耳机的这一天
  8. 感叹无奈人生,学会欣赏人生
  9. PC端微信加群测试用例
  10. 如何设置能WORD文档只能看不能修改,不能复制粘贴不能另存?