如何对只执行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的一些结果,但它自己有很多单元测试,在这种情况下它们是不完整的。有什么好办法摆脱这种局面吗?

如何对只执行foreach操作的方法进行单元测试

我会在各种条件下进行测试,但只对Put本身的结果进行最小的验证-我假设有一些相当简单的方法来检查项目是否已放置?

可能测试:

    零参数
  • <
  • 空集合/gh>
  • 包含一个条目(sanity)的集合
  • 包含两个条目的Collection (sanity)
  • 包含重复条目(x, y, x)的集合
  • 收集,如果可行的话,将一个早期条目放入其中会导致异常

现在不可否认,对于一个简单的foreach循环来说,这可能被视为过度杀伤。我喜欢"测试直到恐惧变成无聊"这句咒语。