①单元的定义:代码中可度量的最小单元(函数、方法)
②检查和验证:不同的输入对应的输出是否与预期一致
①自动化:单元测试应该是全自动执行的,非交互式的。
②非相互依赖:单元测试方法的执行顺序不应该影响执行结果,各个方法之间不应该相互依赖。
③多设置断言:尽量多设置断言,把需要测试的结果都进行测试。
④结果唯二:单元测试只能有两种结果,通过或失败。
①Arrange 准备阶段:设置前提条件,比如初始化对象、模拟数据等等。
②Act 行为阶段(执行动作):调用被测试的方法,并得到返回结果。
③Assert 断言阶段(验证结果):把调用目标方法返回的值和预期的值进行比较,如果和预期一致说明测试通过,否则就是失效。
①简单模拟一个用户类及种子数据
②准备写好待测试的生产代码(以客户端开发常用的单例举例)
③编写单元测试
Mock是模拟的意思,Mock框架就是用来模拟对象的一个技术。一般在一下几种情况下用:
①真实对象具有不确定行为(比如不可预测的结果,类似股票)
②对象很难被创建
③对象的某些行为很难触发(例如网络错误)
④测试需要验证某个回调函数是否被调用
⑤对象并不存在(多端的情况下或者和其他项目或服务打交道的时候)
“2”中的意思也就是说,当针对这个方法输入“南山必胜客”的时候,方法会返回Returns里面的对象。(例子不好,但是这么个意思)
①提高代码质量:
对于每个最小的单元,针对不同输入对应的输出可以和预期结果做对比,减少因为参数导致的异常问题,代码变得更加健康,增加新需求时不用担心影响原来代码逻辑。
②代码耦合度低、模块化:
若要对一个模块单元进行单元测试,需要将每个单元拆分得相对独立,使得代码的逻辑、结构清晰,减少单元之间的依赖。代码出现bug更容易定位。
③代码可重用:
经过单元测试的代码,既稳定又独立,可以更加方便的在其他项目或者项目重构时重复利用。
④代码可读性强:
单元测试某种程度上相当于系统的文档。借助于查看单元测试提供的功能和单元测试中如何使用单元,开发人员可以直观的理解每个单元的功能。
①浪费开发时间(写单元测试需要大量的时间,不如直接写具体的实现),有些模块根本无法进行单元测试(无返回值的方法、UI界面)
②不能发现集成错误、性能问题、或者其他系统级别的问题。单元测试结合其他软件测试活动更为有效。
联系客服