单元测试注意事项总结(一)
为什么80%的码农都做不了架构师?>>>
作为一名优秀的程序员,应该知道单元测试的重要性。整个软件测试工程,单元测试是基础,做好单元测试势在必行。
小编从网络和程序员处收集了大量的单元测试注意事项,以供参考。
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() 等。
单元测试注意事项总结(二)
转载于:https://my.oschina.net/evget/blog/209176
单元测试注意事项总结(一)相关推荐
- 实战SSM_O2O商铺_10【商铺注册】Service层的实现
文章目录 概述 ShopService开发步骤 Service层接口类ShopService Service层接口实现类ShopServiceImpl ShopOperationException 单 ...
- MyBatis-23MyBatis缓存配置【二级缓存】
文章目录 概述 二级缓存的配置 全局开关cacheEnabled Mapper.xml中配置二级缓存 Mapper接口中配置二级缓存 只使用注解方式配置二级缓存 同时使用注解方式和XML映射文件时 二 ...
- MyBatis-16MyBatis动态SQL之【支持多种数据库】
概述 配置 1.MyBatis全局配置文件增加 2.映射文件中的标签调整包含databaseId属性 示例 增加个查询当前时间的接口 编写映射文件 单元测试 注意事项 概述 MyBatis-15MyB ...
- TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比
目录 动机 用法 总览 小对象分配 大对象分配 跨度 解除分配 小型物品中央free清单 线程缓存的垃圾收集 性能说明 PTMalloc2单元测试 注意事项 推荐阅读 Paul Menage的Sanj ...
- 【SEUSE】软件测试及应用课程笔记
[SEU&SE]软件测试及应用课程笔记 README 0. 课程前言 0.1. 软件测试的地位 0.2. 软件测试的方法 0.3. 课程考评 1. UNIT-1 软件测试概述 1.1. 软件测 ...
- c++ ofstream 文件不存在_使用C语言中的头文件有什么技巧和注意事项吗?为什么不直接包含C文件呢?...
从事嵌入式开发多年,对于C语言使用的频率比较多,现在讲讲C语言在平时编程工作中经常出现的一些问题,就以楼主的题目为切入点分析归纳下,分享给正在使用或者学习C语言的小伙伴 C语言头文件有什么用处 在平时 ...
- springboot单元测试类
springboot单元测试类,引入下方jia包 <!--version 依据当前springboot版本即可--> <dependency><groupId>or ...
- spring_Spring MVC控制器的单元测试:REST API
spring Spring MVC提供了一种创建REST API的简便方法. 但是,为这些API编写全面而快速的单元测试一直很麻烦. Spring MVC测试框架的发布使我们可以编写可读,全面且快速的 ...
- Spring MVC控制器的单元测试:“普通”控制器
本教程的第一部分描述了如何配置使用Spring MVC Test框架的单元测试. 现在是时候动手做,学习如何为"常规"控制器编写单元测试了. 显而易见的下一个问题是: 什么是普通控 ...
最新文章
- Java小故事(一)
- OVS 添加端口流程(二十九)
- DEDE利用Ajax实现调用当前登录会员的信息简要说明
- 从 JavaScript 到 TypeScript 5 - 路由进化
- linux中截断日志
- JBoss核心Java Web服务
- 最全电缆直径和电缆流过电流计算以及对照表
- Particleground 粒子特效插件
- 对倒立摆的LQR控制
- ensp中输入interface GigabitEthernet0/0/0提示Wrong parameter found at ‘^‘ position
- 图形界面中消息盒子的使用
- 2.OSGI企业应用开发-Eclipse中搭建Felix运行环境
- Destroying Array
- Windows、Mac环境下IDEA Maven配置和一些错误汇总(修正) tips:查找方便,仅作参考
- girlfriend 生气心情不好怎么解决?
- Segment Anything万物皆可分割
- 【Flyway】pgsql R__开头的sql
- 二叉树的ZigZag打印-Java
- Storm_Storm主要特点
- java基本类型和使用
热门文章
- 启动转换安装失败 拷贝windows安装文件时出错_在Ubuntu16.04下安装MATLAB2017b
- linux 8002端口,linux – 如何限制反向SSH调整端口?
- jdba访问mysql_Java中JDBC操作数据库的步骤
- Ubuntu MySQL 配置 time_zone
- 暂无支持此机型的手机版本_miui+app官方版-miui+安卓版 _5577安卓网
- php Tsocket read 0,thrift 返回 TSocket read 0 bytes 求助!!!!汗血宝马
- 从一张表里选择一列加入到另一张表_将Excel多个文件汇总到一张表
- HTML新增便签source语义,互联网的原理,常用标签,标签分类,HTML杂项,CSS
- 10岁女程序员,婉拒谷歌Offer,研发全球首款AI桌游,现在是一名CEO
- 英特尔AI如何帮助修缮残垣断壁的长城,背后的奥秘找到了