单元测试是什么?为什么要做单元测试?

背锅侠 一个有个性的订阅号


1.单元测试是什么

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为1。

长按图片识别二维码

入群-学习-合作-投稿

加小石阿微信 带你上高速

2.单元测试的好处

1,单元测试不但会使你的工作完成得更轻松。而且会令你的设计会变得更好,甚至大大减少你花在调试上面的时间 

2,提高代码质量 

3,减少bug,快速定位bug 

4,放心地修改、重构 

5,显得专业(玩笑话)

3.写单元测试要注意什么

1,不能只测试一条正确执行路径,要考虑到所有可能的情况 

2,要确保所有测试都能够通过,避免间接损害 

3,如果一个函数复杂到无法单测,那就说明模块的抽象有问题 

4,配置不是单元测试的难点,难点是mock(后文讲),做单元测试需要伪造被测函数用到的大部分函数间接损害:在整个系统中,当某一部分加入了新特性,或者修复了一个bug之后,给系统的其他(与前面可能是互不相关的)部分引入了一个新的bug(或者损害)。如果无视这种损害并且继续开发的话,那么将可能带来一个很危险的问题,最后可能会导致整个系统崩溃,并且没人能够修复。

4.为什么写单元测试(为什么会拒绝单元测试)?

编写单元测试太花时间了?考虑下面问题:

1,对于所编写的代码,你在调试上面画了多少时间? 

2,对于以前你自认为正确的代码,而实际上这些代码却存在重大的bug,你画了多少时间在重新确认这些代码上面? 

3,对于一个别人报告的bug,你花了多少时间才找出导致这个bug的源码位置? 

对于那些没有使用单元测试的程序员而言,上面这些问题所耗费的时间的递增速度是很快的,而且随着项目深入,递增速度会变得更快;而另一方面,适当的单元测试却可以很大程度地减少这些时间,从而为你腾出足够的时间来编写所有的单元测试——甚至可能还有剩余的空闲时间。

a.运行测试的时间太长?

一般合适的测试是不会让这种情况发生的。 

有些真的会花很长时间的,可以把耗时的测试和其他测试分开。

b.不清楚代码的行为?

如果实在不清楚代码的行为,那么现在应该也不是应该编码的时候。

c.代码都能编译通过啊?

ok,你的代码语法正确,应该也是可以运行的。但是代码的行为和你的预期是一样的么?

public void addItem(Object itemObject){
    List myList = new List;
    myList.add(itemObject);
    myList.add(itemObject);
    ...
}

本文部分来源于网络如有侵权请联系删除

背锅侠Tester

长按关注下方二维码领取资料

linux

jmeter

python

appscan

mysql

爬虫

sele

面试

WE WISH YOU HAPPY

NEW YEAR

2019

留言 在看 分享 你看着整儿

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值