项目组最近做了一个工具类的集合包,主要是把一些操作(数据库,中间件,log,等),还有一些工具定制化的需求,放到了一起,并且有计划对其进行迭代,项目还必须做到向前兼容。然后迭代的颗粒度要达到每个工具类的版本。 举个例子: 1.0 版本 redis 1.0 ,db 1.0 ,mq 1.0 1.1 版本 redis 1.1 ,db 1.0 ,mq 1.0
类似这样,使用方可以选择升级与否,升级那个
工具类最好的测试方法应该是单元测试,因为足够简单快速。之前做用例平台的增量保存工具类,我写了 22 个单测用例,5 秒内就可以全部跑完,行覆盖达到 93%,非常高效而且放心。基于这个单测我后续还做了一些代码优化和重构,通过单测可以很放心地改,因为出问题单测会立马告诉你。
自己建个项目去调用也是一种方法,但这种方式单元测试其实也可以覆盖的。开发不愿意写单测,可以你来写呀。
自己直接在项目里写单测倒是没想过(可能是一直来的思维误区吧,单测只能开发写),不过倒是想过自己通过测试框架导入工具类,写 case 维护测试, 不过对于工具的测试倒是有另外一个问题 比如 我 db pool=5 这样的场景 我怎样去验证 这个是 5 而不是 6 or 4
没看懂你这个场景,可以详细说明下?
以 mysql 举例 ,我们正常链接数据库,只需要把 mysql 的驱动 jar 加入项目然后按照官方文档 去配置不就可以了么, 那么我们现在的工具项目 就是把各个工具封装到一起,而我这边需要验证 我们封装的这个 db 的配置与原本的配置 是一致的,比如原本是 int 我们封装的时候字段定义的是 float,然后传参不就有问题了么 另外一种场景就是 ,比如封装了一个多线程的处理,只要传一个值就能起几个线程, 当传了 3 以后,那我得验证明确实起了 3 个线程, 类似这样的场景吧,具体我还不知道,只是刚接到这个任务,自己先脑补了这些东西
你需要先明确你的工具边界。你前面说的有两个类型的东西混在了一起。
封装的配置和原有的是否一致,这个是你工具类独立完成的,可以做单测来检验。可以看看 Mockito 这个框架,它可以 mock 掉某个指定类型的类对应对象,并校验实际调用时传入的参数等。
多线程处理这个值是否确实起了对应的线程数,不知道你这个实际这个线程启动到底是由工具类启动的,还是由背后实际的外部库调用。如果是工具类启动,单测应该也有办法获取到某个指定类有多少个线程在运行的,你可以找找看。
单测的配套工具并不比我们平时看到的 UI 自动化少,甚至更丰富,你可以先从简单的写起,逐步深入。