目录
一、如何定义单元测试?
初步定义:一个单元测试是一段代码,这段代码调用一个工作单元,并检查该工作单元的一个具体的最终结果。如果关于这个最终结果的假设是错误的,单元测试就失败了。一个单元测试的范围可以小到一个方法,大到多个类。
最终定义:一个单元测试是一段自动化的代码,这段代码调用被测的工作单元,之后对这个单元的单个最终结果的某些假设进行校验。单元测试计划都是用单元测试框架编写。单元测试容易编写,能快速运行。单元测试可靠、可读,并且可维护,只要产品代码不发生变化,单元测试的结果是稳定的。
二、优秀单元测试的特点
1、任何人能一键自动化的重复执行;
2、它很容易实现且“第二天”还有意义;
3、运行速度很快且结果稳定;
4、完全隔离,即独立于其他测试的运行;
5、如果它失败,很快能定位到问题所在;
三、 单元测试与集成测试的区别
集成测试定义:它是对一个工作单元进行的测试,这个测试对被测试的工作单元没有控制,并使用单元的一个或多个真实依赖物,例如时间、网络、数据库、线程、随机数产生器等。
如果一次测试的东西太多,运行速度不够快,需要配置,结果不稳定,或者要用到被测试单元的一个和多个真实依赖物,这次测试可以认为是集成测试。例如1:一个测试不能控制系统时间,在代码中使用当前时间DateTime.Now,那每次测试执行使用的都是不同的时间,每次测试本质上是不同的,那这个测试就不稳定。这样的测试已经进入集成测试的范畴。例如2:一个测试使用了真实的数据库,那么和那些只使用了内存中的伪数据的测试相比,这种测试的痕迹更难消除,测试运行时间会更长。这样的测试也属于集成测试的范畴。
总的来说,集成测试和单元测试具有同等重要的地位,但是这两种测试应该彼此分开。集成测试会使用真实依赖物,而单元测试则把被测单元和其依赖物隔离开,以保证单元测试结果高度稳定,还可以轻易控制和模拟被测试单元行为的任何方面。