繁体   English   中英

如何对 IDictionary 的实现进行单元测试

[英]How to Unit Test an Implementation of IDictionary

在实现实现 IDictionary 的东西时,我应该对什么进行单元测试?

测试整个界面似乎有点矫枉过正,但是我知道什么? 我才进行了几天的单元测试...

测试所有的接口点,但要小心测试框架的诱惑。

您应该测试您实现的所有内容。 如果您有通过公共接口调用的代码,则应该有一个支持它的单元测试。 如果您编写代码,则值得测试。

例外可能是简单的属性( Property {get; set;} )

IDictionary 的每个公共成员都应该进行测试。 您还应该设置一些测试以确保您的 IDictionary 的行为与 IDictionary 的其他一些具体实现相同。 事实上,您可以像这样构建大部分测试:

void Test_IDictionary_Add(IDictionary a, IDictionary b)
{
    string key = "Key1", badKey = 87;
    int value = 9, badValue = "Horse";

    a.Add(key, value);
    b.Add(key, value);

    Assert.That(a.Count, Is.EqualTo(b.Count));
    Assert.That(a.Contains(key), Is.EqualTo(b.Contains(key)));
    Assert.That(a.Contains(key), Is.EqualTo(a.ContainsKey(key)));
    Assert.That(a.ContainsKey(key), Is.EqualTo(b.ContainsKey(key)));
    Assert.That(a.ContainsValue(value), Is.EqualTo(b.ContainsValue(value)));
    Assert.That(a.Contains(badKey), Is.EqualTo(b.Contains(badKey)));
    Assert.That(a.ContainsValue(badValue), Is.EqualTo(b.ContainsValue(badValue)));
    // ... and so on and so forth
}

[Test]
void MyDictionary_Add()
{
    Test_IDictionary_Add(new MyDictionary(), new Hashtable());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM