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---MYSQL 基本知识点 第一部分

     一 :  什么是数据库? 数据库就是数据的仓库,用来存取数据的,也是一个文件系统,但是访问这个这个文件需要通过标准的SQL语句(统一的规则), 二 : 什么是关系型数据库?  关系型数据库通常保存的 ...

  2. python | Elasticsearch-dsl常用方法总结(join为案例)

    Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询.它建立在官方低级客户端(elasticsearch-py)之上. 它提供了一种更方便和习惯的 ...

  3. CFUpdate高速模式下出现Error #2038提示的解决方案

    使用CFUpdate上传文件,在IE模式下是正常的,切换到高速模式下出现提示Error #2038错误,文件无法上传. 向作者了解到需要设置challs_flash_update函数中的a.url为绝 ...

  4. JSON File Parse

    1.write a json file base on website(在网站上写一个json文件) json文件网址:https://raw.githubusercontent.com/DJOSIM ...

  5. SEO需要掌握的基础知识

    什么是SEO?  官方解释:  SEO是指通过对网站内部调整优化及站外优化,使网站满足搜索引擎收录排名需求,在搜索引擎中提高关键词排名, 从而把精准用户带到网站,获得免费流量,产生直接销售或品牌推广 ...

  6. 分布式_zookeeper

    分布式协调服务-zookeeper 分布式环境的特点 1.分布性 2.并发性 程序运行过程中,并发性操作是很常见的.比如同一个分布式系统中的多个节点,同时访问一个共享资源.数据库.分布式存储 3.无序 ...

  7. Python 实现获取微信好友信息

    最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...

  8. 程序导致IIS服务器应用程序池停止

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAC6CAIAAADwAEEAAAAQMElEQVR4nO3dz4scV2IH8Ma7EB9CQC

  9. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  10. 【朝花夕拾】Android编码风格篇

    结合51CTO学院中张凌华老师讲的编码风格课程,对自己平时工作中的形成的一些编码风格做一些总结. 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Plann ...