模拟SUT本身
|
有时候,我感到自己想嘲笑被测者的愿望,我知道它看起来很奇怪。
这是例子。我使用C#,但是没关系。假设您有一个班级管理着一些馆藏。它有方法
public void Insert(int position, T element)
和
public void Delete(int position)
这些方法的逻辑不是很简单。除了修改集合外,它们还可以例如引发事件,订阅事件或从事件中取消订阅,获取/释放资源或执行计算。这些方法包含在检查此功能的单元测试中。
现在添加一个方法
public void Replace(int position, T element)
{
Delete(position);
Insert(position, element);
}
我不确定,但是对我来说,用这种方法再次测试所有这些东西是不值得的。相反,检查此方法是否真的首先调用两者是有意义的。
如果前两个方法属于另一个类或接口,那么使用现代的模拟框架将很容易。但是这些方法属于SUT。
可以做我想做的吗?如果没有,那为什么呢?这是模拟方法的意外缺陷还是设计使然。如果是第一个,是否有解决方法?如果第二,我应该如何设计和测试所描述的程序?
没有找到相关结果
已邀请:
2 个回复
闪脖
我不确定在其他模拟框架中是否很容易做到这一点,但这可能会为您指明正确的方向。 正如我所说,在大多数情况下,这可能不是一个好主意,但我本人已使用了此技术,它可能会很有用。
温拎凯玛
这使我可以断言...
很漂亮现在我只需要确保我不滥用它即可;) 编辑: 我应该补充一点,以测试方法
是否被调用,看来它可能需要为
(在C#中为
)。我以为没有必要,但是前几天写的测试却相反。让我知道我是否错了。