PODAM - Java 对象随机数填充器-属性随机赋值 Mock bean
2021/6/30 20:23:06
本文主要是介绍PODAM - Java 对象随机数填充器-属性随机赋值 Mock bean,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近,一个需求让我们接触到了 PODAM,可以自动使用随机数据填充Java 对象原始属性。
缘起
编写代码过程中,测试代码的广覆盖,往往能保证代码的健壮性。
完善的测试用例也能便于后期迭代开发。
测试数据增删改查过程中,最常见的莫过于初始化一个对象,然后将其插入到数据库中。
于是,下面的代码,就占用了测试代码的大部分篇幅:
Street street = new Street(); street.setNumber(12); street.setType((byte) 1); street.setName("Oxford street"); Address address = new Address(); address.setStreet(street); address.setZipCode("123456"); address.setCity("London"); address.setCountry("United Kingdom"); Person person = new Person(); person.setFirstName("Foo"); person.setLastName("Bar"); person.setEmail("foo.bar@gmail.com"); person.setGender(Gender.MALE); person.setAddress(address);
上面的代码没有任何技术含量,而且主观性比较强,开发人员会造一些期望的数据,从而导致一些意外的常见难以覆盖到。
探索
最为开发人员,这种机械又重复性的工作,当然想利用程序自动处理。
于是,我们维护了一个 RandomBean 的工具类,用于随机给对象赋值。
直到有一天,我打开这个类,发现已经上千行。。。
这么简单一个工具,需要这么多代码,我浏览了一下代码。
最初美好的幻想,被无情的需求拍打。
原来,虽然最开始这个类只是简单对整数、字符串、集合等常见类型做处理。
但是后来,各种日期类型、枚举、对象的嵌套等等场景都需要去适配。
更麻烦的是,有些数据对格式有一定要求,比如某个字符串只能有 2 个长度,某个字符串实际上是数字,之后需要转换为 BigDecimal 使用,等等。。。
救星
既然这个这么难维护,有没有现成的轮子可以用呢。万能的 Github 一番寻找,找到了 PODAM
使用 PODAM
加入依赖:
<dependency> <groupId>uk.co.jemos.podam</groupId> <artifactId>podam</artifactId> <version>[latest.version]</version> <!-- <scope>test</scope> --> </dependency>
初始化一个 PodamFactory
。
@Bean public PodamFactory PodamFactory(){ new PodamFactoryImpl(); }
项目中可以直接注入使用:
@Resource private PodamFactory factory; @Test public void testSimplePojo() { SimplePojoToTestSetters pojo = factory .manufacturePojo(SimplePojoToTestSetters.class); Assert.assertNotNull("The pojo cannot be null!", pojo); ...etc }
这篇关于PODAM - Java 对象随机数填充器-属性随机赋值 Mock bean的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器