我在 C# 中有许多方法可以返回我希望测试的各种集合。我想使用尽可能少的测试 API——性能并不重要。一个典型的例子是:
HashSet<string> actualSet = MyCreateSet();
string[] expectedArray = new string[]{"a", "c", "b"};
MyAssertAreEqual(expectedArray, actualSet);
//...
void MyAssertAreEqual(string[] expected, HashSet<string> actual)
{
HashSet<string> expectedSet = new HashSet<string>();
foreach {string e in expected)
{
expectedSet.Add(e);
}
Assert.IsTrue(expectedSet.Equals(actualSet));
}
我必须根据集合是否为数组、列表、ICollections 等来编写一些签名。是否有可以简化此操作的转换(例如,将数组转换为集合?)。
我自己的类(class)也需要这样做。我已经为他们实现了 HashCode 和 Equals。它们(主要)是(例如)MySuperClass 的子类。是否可以实现功能:
void MyAssertAreEqual(IEnumerable<MySuperClass> expected,
IEnumerable<MySuperClass> actual);
这样我就可以调用:
IEnumerable<MyClassA> expected = ...;
IEnumerable<MyClassA> actual = ...;
MyAssertAreEqual(expected, actual);
而不是为每个类(class)都写这个
最佳答案
NUnit 和 MSTest(可能还有其他的)都有一个 CollectionAssert 类
关于c# - 如何在 C# 中创建涉及集合的单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1204922/