2017年12月31日做一次技术总结,人生第一次
框架选型:assertJ+Junit+powemockito+mockito+maven/ant/gradle+jacoco+jenkins+sonarqube
单元测试中,要测试目标模块的时候比如测试 service 方法的时候,service 方法中我们有可能会去调用数据库的执行结果,会取 redis 中缓存数据,也有可能会使用当前的系统时间,根据系统时间做一些逻辑处理,造成被测方法对外部有很强的依赖关系。假如被依赖的方法还没有开发完成或者预期输出有问题,就会造成被测方法单元测试失败。单元测试的思路就是我们在不涉及依赖关系的情况下测试代码。这种测试方式可以让你无视代码的依赖关系去测试代码的有效性,具体就是使用 mock 技术,模拟被依赖的组件的行为。
controller,service 层及 util 工具类使用 mockito 和 powermockito
dao 层使用,一开始想着在不依赖数据库的情况下就行测试,所以就使用了 h2 内存数据库,但是实际写的时候由于数据库类型的不同,很多 sql 语句使用了特定数据库的特定函数,导致一些 sql 不能测试。
前端 js 的单测没有涉及
环境搭建:
1). 搭建 sonarqube+maven+jenkins
jenkins 加节点,随着 jenkins 构建项目的增多,单个项目构建时间从一分钟到十几分钟不等,当同时多个项目代码有提交更新触发构建的时候会有大量任务排队等待。
maven 配置文件,添加 sonar 的地址配置,执行 maven 构建后 sonar 会自行去进行