[英]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.