Java学习资料 交流技术 干货 领取
1. MapStruct
MapStruct是干什么的?
MapStruct是个代码产生器,它能直接根据注解生成 Java 对象对应的转换器。
比如,直接把一个 A 类型的 Java 对象,给转成 B 类型的 Java 对象,只需要在他们之间配置上字段之间的映射关系即可。
为什么在项目里用它?
现在随便一个项目都是多层的,尤其是 Web 项目,经常需要在多层之间做对象模型转换,比如 DTO 转换成 BO。
DTO(Data Transfer Object):数据传输对象,Service 向外传输的对象。
BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。
但是这种转换工作就像是小时候,老师罚我们抄写名人名言 100 遍一样,十分枯燥,还容易出错。
2. Retrofit
Retrofit 是干什么的?
Retrofit 就是一套 Http 客户端,可以用来访问第三方的 Http 服务。
比如,咱们代码里想调用一个 Http 协议的 URL,就可以用它来访问这个 URL,获取响应结果。
为什么在项目里用它?
在公司里,我们有些项目有如下的特点:
- 不是基于 Spring 的项目
- 需要经常访问大量的第三方 Http 服务
- 访问 Http 服务的模型通常是异步回调
3. Faker
Faker 是干什么的?
Faker 是专门用来产生各种假数据的辅助工具库。
比如,你想产生个和真实数据一样的有姓名、有地址的用户。
为什么在项目里用它?
我们经常需要造数据去测试,但是,如果没有工具辅助,我们自己造数据,存在一些问题。
1.数据是需要格式的
很多关于项目,都需要一些格式上尽量能模仿真实世界的数据。
比如,国内用户的姓名,大部分都是两字、三字的姓名,叫王大,就不能叫 王da 这种。
又比如,国内的地址是 xx市xx区xx街道xx号 这种的,就不能胡写一个几个没意义的汉字来当地址。
用贴近真实格式的数据,一来可以测出我们对用户的数据解析是否存在问题,二来可以测出数据库内的字段长度是否没问题。
所以,格式对产生出可靠地测试结果,是很重要的。
2.数据的量大
有的测试数据量都是上十万、百万的,这些量级的数据并不是只会产生一次。
甚至几乎每个项目,每个项目的每次测试,可能都会需要新的数据,需要能源源不断地产生出来。
更甚至的是,有时候还想要根据我们的要求,在恰当的时候,产生某种关系的数据,或者以某些特定频率产生。比如,两秒后产生一次数据;比如,产生一批姓王的数据。
以上这三种要求综合起来,要是我们自己造数据,那真是要了命了。
与其自己开发,不如用现成的——Faker 库被我们找到了。
Faker库可以创造三百多种数据,而且还很容易对它进行扩展改造,去产生更多的贴合我们需求的数据。
4. Wiremock
Wiremock 是干什么的?
Wiremock 是一个可以模拟服务的测试框架。
比如,你想测试访问阿里的支付相关接口的代码逻辑,就可以用它来做测试。
为什么在项目里用它?
比如,我们需要调用银行接口去做资金业务,调用微信接口去做微信登录……这些调用第三方服务的测试存在一个问题:
即太过依赖对方的平台。假如对方平台限制了一些 IP,或者限制了访问频率,又或者就是服务出现了维护,都会影响我们自身的功能测试。
为了解决上述问题,在之前,我们需要自己写代码模仿第三方的接口,等我们自己全部测试没问题了,再去和第三方联调。对于这种模拟出来的接口,我们称作挡板。
可是,这种方式是个苦活,没人愿意干。因为每接入一个第三方,可能都需要做挡板。辛苦做个挡板,就是单纯为了测试。如果第三方的接口做了改造,你这边还得跟着改。
大家可以想想,换成你自己,你愿意做这么件事儿吗?
这时候,Wiremock 的价值就体现出来了。有了 Wiremock,挡板这种东西就再也不存在了,直接在单元测试里模拟测试即可。
虽然 Java 有很多遭人诟病的地方,但是 Java 最重要的优点之一,就是它的生态,有其琳琅满目的各种工具类库。
希望大家都“懒”一点,不要埋头去做无效的苦干,不要自己造轮子,你要相信:
你遇到的问题,基本已经有很多人遇到过了,而且已经被牛人给解决了,把轮子都给你造好了。
更多Java干货 技术交流小组https://jq.qq.com/?_wv=1027&k=piqNGAfNhttps://jq.qq.com/?_wv=1027&k=piqNGAfN