把单元测试系列文章放在持续集成的类别中是有原因的,因为作为持续集成的最后环节:自动化单元测试,是持续集成的一个重要部分,但是这就对单元测试的有效性有了较高的要求,这可能意味着你需要写很多的断言来确定接口返回的结果,本系列文章的目的就是找到简便、通用的办法来撰写有效的单元测试。
这其中面临的问题有以下几点:
1.对于数据库的增删改操作的方法,我们对他们进行单元测试的时候,重点是放在数据库的比对上,断言应该为方法执行后,数据库中的数据是否是我们预期的数据,对于这一点,我们可以使用dbunit来编写单元测试,为了使用更加简便,也可以追加使用springtestdbunit
2.对于查询操作的方法,目前我的工作中是这样进行单元测试的:单元测试结果只进行返回代码的断言,例如0代表成功返回结果,我们只断言了返回值为0,具体返回的内容,并没有进行逐一的断言,只是开发人员在自测单元测试的时候,自己debug进行返回结果的查看。因为逐一断言是一个非常浩大的工程,耗时耗力,这就是为什么我强调有效性的原因,显然这种单元测,放在jenkins上自动构建几乎是是无意义的,即使单元测试通过,我们也并不知道,方法返回的结果,是不是我们真正想要的结果。
3.其他,如推送消息的方法的单元测试不在本次讨论范围之内
本系列文章,暂对1、2两种情况进行有效单元测试的阐述。