要不要单元测试?

要不要搞单元测试?

1、什么是单元测试?

单元测试的基本概念:
对软件中的最小可测试单元进行检查和验证

①单元的定义:代码中可度量的最小单元(函数、方法)数据库

②检查和验证:不一样的输入对应的输出是否与预期一致网络

2、如何进行单元测试?

1.要进行单元测试首先须要知道单元测试须要的几个基本原则:

①自动化:单元测试应该是全自动执行的,非交互式的。框架

②非相互依赖:单元测试方法的执行顺序不该该影响执行结果,各个方法之间不该该相互依赖。模块化

③多设置断言:尽可能多设置断言,把须要测试的结果都进行测试。函数

④结果惟二:单元测试只能有两种结果,经过或失败。性能

2.单元测试的基本流程:

①Arrange 准备阶段:设置前提条件,好比初始化对象、模拟数据等等。单元测试

②Act 行为阶段(执行动做):调用被测试的方法,并获得返回结果。测试

③Assert 断言阶段(验证结果):把调用目标方法返回的值和预期的值进行比较,若是和预期一致说明测试经过,不然就是失效。3d

3.单元测试示例
以C#平台的MSUnit测试框架演示

①简单模拟一个用户类及种子数据对象

②准备写好待测试的生产代码(以客户端开发经常使用的单例举例)

③编写单元测试

4.异常捕获测试
一些底层项目须要抛出异常,这种状况下咱们须要对相应的异常也作出测试。

3、Mock框架-Moq

Mock在单元测试中是一个很重要的概念,

​ Mock是模拟的意思,Mock框架就是用来模拟对象的一个技术。通常在一下几种状况下用:

①真实对象具备不肯定行为(好比不可预测的结果,相似股票)
②对象很难被建立
③对象的某些行为很难触发(例如网络错误)
④测试须要验证某个回调函数是否被调用
对象并不存在(多端的状况下或者和其余项目或服务打交道的时候)

以Moq框架为例,假设咱们如今须要经过一个公司对象获取到该公司旗下的全部游戏,该方法依赖一个公司对象。

可是,这个公司对象以接口形式用公司名称获取,咱们并不知道接口实现和公司数据库。

这时,咱们就能够用Moq模拟一个公司仓储的实例,并设置好一些输入对应的输出结果。

“2”中的意思也就是说,当针对这个方法输入“南山必胜客”的时候,方法会返回Returns里面的对象。(例子很差,可是这么个意思)

“南山必胜客”懂得都懂
最后能够运行测试,获得测试结果。当咱们看到一片绿的时候,心情是否是舒畅不少呢:)

4、为何须要单元测试?

1.单元测试能解决的问题

①提升代码质量:

​ 对于每一个最小的单元,针对不一样输入对应的输出能够和预期结果作对比,减小由于参数致使的异常问题,代码变得更加健康,增长新需求时不用担忧影响原来代码逻辑

②代码耦合度低、模块化:

​ 若要对一个模块单元进行单元测试,须要将每一个单元拆分得相对独立,使得代码的逻辑、结构清晰,减小单元之间的依赖。代码出现bug更容易定位。

③代码可重用:

​ 通过单元测试的代码,既稳定又独立,能够更加方便的在其余项目或者项目重构时重复利用

④代码可读性强:

​ 单元测试某种程度上至关于系统的文档。借助于查看单元测试提供的功能和单元测试中如何使用单元,开发人员能够直观的理解每一个单元的功能。

2.单元测试的缺点

浪费开发时间(写单元测试须要大量的时间,不如直接写具体的实现),有些模块根本没法进行单元测试(无返回值的方法、UI界面)

②不能发现集成错误、性能问题、或者其余系统级别的问题。单元测试结合其余软件测试活动更为有效。

单元测试仍是应该多搞,不为别的,就为了看到那一片绿色,嘿嘿...
相关文章
相关标签/搜索