几个超好用的开源类库 推荐

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,获取响应结果。

为什么在项目里用它?

在公司里,我们有些项目有如下的特点:

  1. 不是基于 Spring 的项目
  2. 需要经常访问大量的第三方 Http 服务
  3. 访问 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=piqNGAfNicon-default.png?t=LA92https://jq.qq.com/?_wv=1027&k=piqNGAfN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值