Stub技术的问题就在于我们在重写这些类的时候,不仅仅要关注接口,还要关注其内部逻辑。如果你只是简单的返回一个固定的响应,会很简单。但是对于每一次运行需要根据不同的输入返回不同的输出时方法内部的处理就会复杂的多。
由于实现的难度,所以,使用时就要注意:有高价值、重用度高、数量少。这就是说,重写一个类,就可以有一大批类可以用。
二、Mock技术
Mock是目前单元测试中最常用的。用来在对象层次上实现细类度替换十分方便。
当我们在测试中,需要其它类/接口的一个方法时,我们可以通过继承/实现其一个子类对象来替换实际对象。在Mock子类中将需要的方法直接返回需要的结果就行了。
privateclass Mock_QueryCtrl extends QueryCtrl
{
public List queryNEList()
{
List neList = new ArrayList();
//直接填充并返回你需要的数据...
return neList;
}
}
同样,我们也可以通过测试待测类的子类来测试待测类。这对于被测方法使用了自身类的方法时很适用。
三、依赖注入
单元测试的一个关键就是替换。类层次上的替换,通过在类路径中提前加载就可以实现。而在对象层次上,java的反射机制提供了很好的帮助。
1).获取/注入私有属性
2).执行私有方法
文章来源于领测软件测试网 https://www.ltesting.net/