如何对只执行foreach操作的方法进行单元测试
本文关键字:方法 单元测试 操作 foreach 执行 | 更新日期: 2023-09-27 18:08:04
在我的类中有一个简单的方法,可以将元素放入缓存中:
public void Put(TItem item)
{
// Do something
}
现在我添加了另一个方法,可以一次放置多个元素:
public void Put(IEnumerable<TItem> items)
{
foreach (var item in items)
{
Put(item);
}
}
似乎为了避免重复,我应该只检查调用Put的次数。但我只能间接地这样做,因为这不是依赖项。在测试这些方法时,是否有一种方法可以避免复制/粘贴?我可以做一个冒烟测试来检查Put的一些结果,但它自己有很多单元测试,在这种情况下它们是不完整的。有什么好办法摆脱这种局面吗?
我会在各种条件下进行测试,但只对Put
本身的结果进行最小的验证-我假设有一些相当简单的方法来检查项目是否已放置?
- 零参数
- <
- 空集合/gh>
- 包含一个条目(sanity)的集合
- 包含两个条目的Collection (sanity)
- 包含重复条目(x, y, x)的集合
- 收集,如果可行的话,将一个早期条目放入其中会导致异常
现在不可否认,对于一个简单的foreach
循环来说,这可能被视为过度杀伤。我喜欢"测试直到恐惧变成无聊"这句咒语。