文档章节

单元测试注意事项总结(一)

kouxunli1
 kouxunli1
发布于 2014/03/18 10:48
字数 883
阅读 108
收藏 2

作为一名优秀的程序员,应该知道单元测试的重要性。整个软件测试工程,单元测试是基础,做好单元测试势在必行。

小编从网络和程序员处收集了大量的单元测试注意事项,以供参考。

   1 保持单元测试小巧, 快速

  理论上, 任何代码 Check-in 之前都应该把所有测试套件完整的跑一遍。 所以保持测试代码轻快能减少开发迭代周期。

  2 单元测试应该是全自动/非交互式的 

  测试套件通常是定期执行的, 执行过程也必须是完全自动化才有意义。 输出结果需要人工检查的测试不是一个好的单元测试。

  3 让单元测试很容易跑起来

  对开发环境进行配置, 最好是敲一条命令或是点击一个按钮就能把单个测试用例和测试套件跑起来。

  4 对测试进行评估

  对执行的测试进行覆盖率分析, 以便得到精确的代码执行覆盖率, 调查哪些代码未被执行。

  5 立即修正失败的测试

  每个开发人员都应该保证新 Check-in 的测试用例能够跑成功, 并且当有代码 Check-in 现有测试用例也都能跑通过。 

  6 把测试维持在单元级别

  单元测试即类 (Class) 的测试。 一个 “测试类” 应该只对应于一个 “被测类”, 并且对 “被测类” 行为的测试环境应该是隔离 的。 必须谨慎的避免使用单元测试框架来测试整个程序的工作流, 这样的测试即低效又难维护。 工作流测试 (译注: 指跨模块/类的数据流测试) 有它 自己的地盘, 但它绝不是单元测试, 必须单独设置和执行。 

  7 由简入繁

  再简单的测试也远远胜过完全没有测试。 一个简单的 “测试类” 会促使建立 “被测类” 基本的测试骨架, 可以对构建环境, 单元测试环境, 执行环境以及覆盖率分析工具等有效性进行检查, 同时也确保 “被测类” 能够整合并被调用。

  下面便是单元测试版的 Hello, world! :

1
2
3
4
5
6
7
8
9
void testDefaultConstruction()
 
  {
 
  Foo foo = new Foo();
 
  assertNotNull(foo);
 
  }

  8 保持测试的独立性 

  为了保证测试稳定可靠且便于维护, 测试用例之间决不能有相互依赖, 也不能依赖执行的先后次序。 

  9 测试类的控制 

  大部分C++和 Python 库均把测试代码从功能代码目录中独立出来, 通常是创建一个和 src 目录同级的 tests 目录, 被测 模块/类名之前也常常 不加 Test 前缀。 这么做保证功能代码和测试代码隔离, 目录结构清晰, 并且发布源码的时候更容易排除测试用例。

  10 合理的命名测试用例 

  确保每个测试方法只测试 “被测类” 的一个明确特性, 并且相应的给测试方法命名。 典型的命名俗定是 test[what], 比如 testSaveAs(),testAddListener(), testDeleteProperty() 等。

单元测试注意事项总结(二)

© 著作权归作者所有

kouxunli1
粉丝 24
博文 144
码字总数 59616
作品 0
九龙坡
架构师
私信 提问
加载中

评论(1)

啊啊啊啊啊啊啊啊
啊啊啊啊啊啊啊啊
聊天啊。。。
springboot从入门到精通教程分享, 深度掌握Springboot实践技术教程

深度掌握Springboot实践技术教程,共22个课时,需要的可回复邮箱。 课程简介 day1 01springboot简介-曾经开发中的问题 02springboot解决的问题-优势以及弊端 03springboot环境准备 04spring...

小小倾听
2018/12/06
736
19
阿里Java开发手册(自我总结版一)

又一次阅读阿里编程规范,发现有不少条目又给忘了,离上次阅读大概一个多月。我的阅读习惯应该还不错,每次看书籍之类的不会只看一遍,因为之前的经验发现,只看一遍的内容,会特别快的遗忘,...

思与学
2017/11/06
0
0
「ThinkPHP开发者周刊」第4期——日志、调试和通知

[ 本周读数 ] ——官方扩展数量已经超过个 ThinkPHP版本开始,官方的扩展全部通过安装,目前官方维护以及参与的扩展已经超过36个,并且都已经支持最新的版本,涵盖和满足了主流的现代化开发需...

流年
2018/11/05
106
0
搭建和学习Angularjs官方示例angular-phonecat项目

一、简介 最近需要学习angularjs,可是官方的网站在中国不是很友好,访问不是很方便。 还好找到了下面的一个更齐全点的官方示例angular-phonecat项目的教程网站PhoneCat 入门教程 App 导言 ...

dhb_oschina
2016/04/22
2.3K
0
springboot下配置junit测试环境

项目中使用到了spring_boot,我想在项目中写一些单元测试,但是由于对springboot 不熟悉并且springboot的中文资料非常的少,所以花了很长的时间才把springboot的junit测试环境搭好,虽然很简...

闪电
2016/07/23
78
0

没有更多内容

加载失败,请刷新页面

加载更多

秒杀系统思路

业务分析 技术挑战 请求响应要快:无论成功失败,需要尽快返回给用户 架构设计   前端:静态化   站点层:限制请求数   服务层:乐观锁写缓存   数据库CAP:读写高可用,一致性,扩容...

雷开你的门
25分钟前
10
0
最全的教育行业大数据解决方案,个个针对痛点

大数据的悄然兴起也带动了教育行业的革新,移动教育、云课堂等的出现,使得教育行业再次成为了可以中长期保持高景气的行业。然而,初涉数据领域的教育行业同时也面临着相当大的难题,还需要更...

朕想上头条
29分钟前
7
0
预约模块设计分析

1.预约功能描述: 预约是小程序中常见的一种商品管理系统,商家可根据商品或服务的特性,灵活设置预约细节,为用户提供线上预约服务,如场地预约,商品预定等,实现高效经营。 预约场景: ...

鱼煎
32分钟前
5
0
阿里云日志服务构建网站实时分析大盘实战

场景分析 挖掘数据价值是当前企业级网站共同面临的问题。买买网是一个电商平台网站,每天拥有大量的用户访问和购买记录。为了引导用户直接消费,提升购买率和转化率,不同的用户类别需要推荐...

阿里云官方博客
33分钟前
5
0
TL665xF-EasyEVM开发板硬件处理器、NAND FLASH、RAM

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
37分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部