当实现实现IDictionary的东西时,我应该对哪些单元进行测试?
测试整个界面似乎有些矫kill过正,但是我知道什么呢?我才进行单元测试几天了...
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.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());
}
Run Code Online (Sandbox Code Playgroud)