测试范围
info
项目中拿些类需要进行单元测试呢? 单测不是目的,是手段。目的都是保证质量
#
一、从项目分层维度设计单测用例常见的项目分层有一下这些。
- Web层
- Service层
- domain层
- Integration层
- Common层 公用类必须要做
忽略#
1.1 Web层一般web层已经上线不会发生改动,往往改动的是新增或者删除参数。可以忽略。
建议#
1.2 Service层Service层往往是程序的接口层,接受来自Web或者Message、Job的调用。Service的逻辑会覆盖大部分的下游分层。Service是我们的业务入口 接口往往不会改变,改变最多的是它的实现。这一层我们要做好单元测试。
但是这一层的单元测试可能会涉及数据的读写和外部的数据读写。可以使用Mockito数据进行替换外部数据的返回。 内部数据的读写可以通过事务回滚的方式处理,主要验证自己代码中对这些数据的结算逻辑是否有问题。
这一层入参的数据往往会很多,对系统也有相关的依赖,自行评估方案。 这里提供两个曲线救国的方案:
- 如果不好测试可以对程序的最小单元进行测试,曲线救国。
- 对某个方法中,不满足测试场景的接口,进行Mockito,以跳过这段逻辑。
建议#
1.3 Domain层这一层和Service的业务是比较相像的,只不过不会有Service层一样那么复杂,参考上文。
建议#
1.4 Integration层防腐层,主要逻辑就是对外部接口的调用,主要测试不要出现NPE。参数的输入值做好非空非null判断,对返回结果做好非空和非null。
外部提供的 Feign
接口, 在没有提供实现之前可以先使用 Mockito
进行Mock
帮助完成接口的测试。
必须#
1.5 Common层这一层基本出现的都是工具类,主要是功能性代码,自己提供的工具类,一定要做好单元测试。主要是考虑 异常情况和极限的情况。工具类因为变动的不会太频繁所以维护成本是也比较低的。
#
二、针对核心计算逻辑设计单测用例比较核心的计算逻辑进行测试。比如根据外部数据进行组装生成新的数据模型的方法。
#
三、忽略测试在实际开发中可能有些测试只是为了验证某些数据,每次执行要提前准备数据之类的。这种特殊的单测,只能人工指定运行的
我们可以忽略它,使用@Ignore
忽略。这样在Maven运行单测时候,会只运行你没有进行忽略的单测。