1、什么是单元测试?

  顾名思义单元测试就是对软件系统中最小的单元(函数、类)做测试,类似焊接电路板前对每个电容器(电子元器件)的测试。从软件测试分级来看,单元测试是最底层也是离程序员最近的一层,一般由开发人员负责完成,是软件质量最基础的保证。当然单元测试的最终受益者也还是程序员,坚持编写单元测试代码不但可以提高程序质量减少BUG,还可以辅助其他程序员阅读已有代码,提升开发效率等等。

2、为什么我们都不够重视单元测试?

  我相信每一个负责任的程序员都是非常重视单元测试的。当我们在新加、修改了某一个功能或某一段代码后一般都会调试和自测,拿Web后台开发来说,每个接口肯定都是开发人员在本机上调试过的(一般喜欢用post工具),然而我们不重视的是什么呢?是对这种自测流程的固化。

  试想某天你接到一个新需求:要新增一个功能A,需要用到公共服务F,分析/构思、编码、编译/构建/部署、调试/自测一顿行云流水的操作后我们提测并顺利上线了。一段时间后公共服务F修改了实现逻辑,通知你可能需要做相应的修改.....什么?A里面可是有100个接口用到了F,难道我要一个一个去检查哪些被影响到了吗?..emm....是的,真的要一个一个检查,这个时候我们就要想了有没有什么自动化测试的工具能够一遍就帮我们检查完呢?有的:编写单元测试代码。

  那么是什么原因引起我们不够重视单元测试呢?首先是公司的价值导向,是以业务支撑为主要KPI还是以交付质量等决定了项目经理、架构师以至程序员愿意为单元测试付出的精力和时间;其次是项目性质,相对后台项目来讲前台项目确实是不容易实现单元测试;还有就是需求的重要程度和开发周期也决定了程序员是否愿意花更多额外的时间去编写测试代码。

3、车险项目单元测试

  不同的编程语言有不同的UT框架,拿Java来说,主要有JUnit和TestNG两大框架,同时也有很多的Mock和辅助工具。

  在车险项目中,单元测试框架我们选型了JUnit配合spring-test,Mock框架采用了Mockito,同时数据库采用了H2嵌入式数据库,以及jsonassert和json-path等工具包。

  单元测试的原则:所有的核心代码都必须编写单元测试

  据说楼上的Accenture某些项目要求单元测试的行覆盖率达到99%,分支覆盖率达到90%

4、一些常见问题

1)mockMvc.perform时filter不起作用,导致程序获取不到模拟的登陆session

l 增加HandlerInterceptorAdapter,在preHandle中手动调用web.xml中配置的filter。

l 后面发现AbstractMockMvcBuilder提供了配置filter的API,直接添加就可了。

Mockito未去代理时无法mock的问题

Mockito主线程结束时,子线程被终止

(异步接口不起作用)

单元测试与Mockito的更多相关文章

  1. 单元测试利器Mockito框架

    什么是Mock Mock 的中文译为仿制的,模拟的,虚假的.对于测试框架来说,即构造出一个模拟/虚假的对象,使我们的测试能顺利进行下去. Mock 测试就是在测试过程中,对于某些 不容易构造(如 Ht ...

  2. 单元测试 - SpringBoot2+Mockito实战

    单元测试 - SpringBoot2+Mockito实战 在真实的开发中,我们通常是使用SpringBoot的,目前SpringBoot是v2.4.x的版本(SpringBoot 2.2.2.RELE ...

  3. 单元测试神器Mockito

    Mockit是一种mock工具/框架.mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应 1.工程中引入Mockito #以gradle的方式为例 testCompile("o ...

  4. 单元测试系列:Mock工具之Mockito实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...

  5. 单元测试系列之五:Mock工具之Mockito实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...

  6. Android单元测试

    安卓单元测试总结文章,目测主要会cover以下的主题: 什么是单元测试 为什么要做单元测试 JUnit Mockito Robolectric Dagger2 一个具体的app例子实践 神秘的bonu ...

  7. Android单元测试: 首先,从是什么开始

    Android单元测试: 首先,从是什么开始 http://chriszou.com/2016/04/13/android-unit-testing-start-from-what.html 这是一系 ...

  8. 【项目经验】Mockito教程

    一.教程 转载:https://blog.csdn.net/sdyy321/article/details/38757135/ 官网: http://mockito.org API文档:http:// ...

  9. Java Mocking入门—使用Mockito

    Java Mocking入门—使用Mockito 2014/03/10 | 分类: 基础技术 | 0 条评论 | 标签: 单元测试 分享到:8 本文由 ImportNew - liken 翻译自 dz ...

随机推荐

  1. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){ Map ...

  2. nmon监控分析

    一.下载软件安装 wget http://sourceforge.net/projects/nmon/files/nmon_linux_14i.tar.gz tar xf nmon_linux_14i ...

  3. mac 下SonarQube 安装与使用

    参考文件:https://www.jianshu.com/p/aa863cf30406 https://www.jianshu.com/p/b41262fca5b8 jenkins 集成Sonar: ...

  4. ThreadLocal是否会导致内存泄露

    什么是内存泄露? 维基百科的定义:[内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存],我的理解就是程序失去了对某段内存的控制,那么这段内存就算是泄露了. ThreadLocal为什么会导致 ...

  5. Springboot关于脚本脚本启动的项目:

    #!/bin/bash if [ -f ~/.bash_profile ];then  . ~/.bash_profilefi JAVA_HOME=/usr/local/usr_software/jd ...

  6. 权限系统设计-day01

    数据库表的设计:   关键流程思考: 权限在SSH系统中应该表现为什么东西? 小胖这个用户登陆:1,检查用户名和密码;2,检查通过; 1),得到小胖这个用户的对应的所有的角色:R1 2),根据所有的角 ...

  7. R语言读取EXCEL文件的各种方法

    路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...

  8. CMS使用对应版本当作新项目。

    document.form1 整体替换document.forms[0] document.Templetslist 整体替换document.forms[0] document.f_Upload整体 ...

  9. NeuChar 平台使用及开发教程(二):设置平台账号

    在上一篇<NeuChar 平台使用及开发教程(一):开始使用 NeuChar>中我们了解了 NeuChar 的角色和大体功能框架,并进行了注册,本文将介绍如何设置多账号,以便让 NeuCh ...

  10. [Swift]LeetCode600. 不含连续1的非负整数 | Non-negative Integers without Consecutive Ones

    Given a positive integer n, find the number of non-negativeintegers less than or equal to n, whose b ...