Java Faker 测试数据神器
前言:
在日常的测试中,我们经常需要提前准备一大堆测试数据,用来验证业务逻辑。当然对于简单的数据类型完全可以通过 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 使用步骤
- 创建 faker 对象
- 通过 faker 对象获得要生成的实体对象
- 调用实体对象获得对于生成的部分
这里的实体对象,对应上面的 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 测试数据神器相关推荐
- Java虚拟机性能管理神器 - VisualVM(2) 入门
一下载VisualVM 最新版本下载 历史版本下载 二启动VisualVM 三VisualVM用户目录 四VisualVM窗口 1应用程序窗口 2详情窗口 五VisualVM插件 Java虚拟机性能管 ...
- idea 查看jsp是否被引用_IDEA集成Java性能分析神器JProfiler
阅读文本大概需要10分钟. <eclipse集成Java性能分析神器JProfiler>讲解了eclipse集成Jprofiler,这篇讲解一下IDEA如何集成JProfiler. 1.在 ...
- Java面试通关神器,冲鸭,进大厂!
Java面试通关神器:涵盖Java+分布式+框架+数据库+Redis缓存+线程等 该内容包含了入门级 Java 程序员和多年经验的高级开发者的问题.无论你是 1.2.3.4.5.6.7.8.9 还是 ...
- java化测试神器-流量回放平台
# java化测试神器-流量回放平台 作者:佳晖,荣荣 文章结构 基本介绍 使用流程 实现方案 总结 基本介绍 背景 目前公司正在进行php java化迁移工作. Java化测试本质上是一次回归工作. ...
- java web打包神器_前端开发人员的桌面应用神器 Electron
原标题:前端开发人员的桌面应用神器 Electron 01 为什么用 Java 来开发桌面应用? 曾经的 Java 脆弱.简陋.甚至有被边缘化的危险,不过 Java 在经过了两次飞跃后(以 V8 为首 ...
- 发现一款自学Java可视化工具神器,非常牛逼,太爱了!
最近发现一款Java自学神器,超级牛逼,今天分享给大家. 介绍 Codegym 是一个以 Java 为中心的平台,它比其他平台上都要更加深入的介绍 Java,这个网站将理论和实践知识相结合,你可以在上 ...
- Java性能分析神器-JProfiler详解(一)
前段时间在给公司项目做性能分析,从简单的分析Log(GC log, postgrep log, hibernate statitistic),到通过AOP搜集软件运行数据,再到PET测试,感觉时间花了 ...
- 几个实用的IDEA插件 Java开发辅助神器!
微信公众号:Java随笔录 关注可了解更多Java相关的技术分享.问题或建议,欢迎公众号留言! 如果你觉得JiangNanMax对你有帮助,欢迎赞赏! 文章目录 JRebel for IntelliJ ...
- 一款Java字节码神器-jclasslib bytecode viewer
一.前言 相信很多学习Java的小伙伴都很好奇编译后的class文件里面的内容到底长什么样?我们都知道class文件里面存储的是字节码,直接打开文件是一堆乱码,所以我们需要一些工具来帮助我们去查看字节 ...
最新文章
- Java练习 SDUT-1132_斐波那契数列
- 静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
- Boost:align overflow对齐溢出的测试程序
- matlab怎么调整子图间距,matplotlib调整子图间距,调整整体空白的方法
- 双城生活,一种相对无奈且幸福的选择
- 除了PS,原来这个也可以轻松实现图像处理!
- Hibernate的关联映射--一对多、
- linux 自动安装 yum,LINUX6安装YUM仓库和实现开机自动挂载
- 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理
- 用python的正则表达式实现简单的计算器功能
- 编程函数c语言,C语言编程(练习1:函数 )
- 关于控件开发的几点意见
- sql联接查询_SQL联接
- cron表达式解析生成网站
- 计算机系统优化的方法.,20种优化电脑开机速度方法!
- 振动试验条件及试验标准
- 计算机图表制作教程,echarts入门教程 5分钟上手制作ECharts图表
- 106短信平台如何申请?申请周期是多久?
- 当公路的规则与秩序,被昇腾AI时刻守护
- python计算导数_python计算导数并绘图的实例
热门文章
- mac android手机 来电,CES2018 | 在电脑接听手机来电上 戴尔对苹果安卓一视同仁
- javascript毫秒计时器_JavaScript 计时器函数用法
- 软考高级哪个含金量高?哪个简单?
- 幻塔html5,《幻塔》祝玩家节日快乐,《原神》意外“躺枪”,米哈游这波真冤...
- 【leetcode买卖股票系列问题】多次买卖/手续费/冻结期
- python二叉树中序遍历迭代法
- 苹果6s解除耳机模式_【玩码】没想到,iPhone 也有取消耳机的这一天
- 感叹无奈人生,学会欣赏人生
- PC端微信加群测试用例
- 如何设置能WORD文档只能看不能修改,不能复制粘贴不能另存?