测试应该独立于所有其他的测试,而且必须独立于周围的环境。目标只有一个,就是测试应该能够以任意的顺序一次又一次的运行,并且产生相同的结果。如果结果不同,则存在BUG。
Independent 独立的
编写测试时,确保一次只测试了一样东西,但并不表示一个TestMethod内只能使用一个Assert,而是一个测试函数应该专注于产品代码中的一个函数,或者组合起来并共同提供某个特性的一组函数。
Professional 专业的
测试代码必须同产品代码相同的风格来编写。这意味着你需要抽取出共同且重复的代码,并把它们放到一个功能类之中,从而可以复用;单元测试的代码一样讲究------维护封装,DRY原则,降低耦合。
何时需要Mock对象
l 真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)
l 真实对象很难被创建(比如具体的web容器)
l 真实对象的某些行为很难触发(比如网络错误)
l 真实情况令程序的运行速度很慢
l 真实对象有用户界面
l 测试需要询问真实对象它是如何被调用的(比如测试可能需要验证某个回调函数是否被调用了)
l 真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍的问题)
Mock对象的三个步骤
1. 原型
ClassA调用 ClassB的Method()
2. 使用一个接口来描述这个对象
ClassA 通过接口调用ClassB的Method
3. 以测试为目的,在mock对象中实现这个接口
文章来源于领测软件测试网 https://www.ltesting.net/