pet*_*ust 4 c# collections unit-testing
我在C#中有许多方法可以返回我希望测试的各种集合.我想尽可能少地使用测试API - 性能并不重要.一个典型的例子是:
HashSet<string> actualSet = MyCreateSet();
string[] expectedArray = new string[]{"a", "c", "b"};
MyAssertAreEqual(expectedArray, actualSet);
Run Code Online (Sandbox Code Playgroud)
// ...
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));
}
Run Code Online (Sandbox Code Playgroud)
我必须根据集合是否是数组,列表,ICollections等来编写许多签名.是否存在简化此操作的转换(例如,将数组转换为Set?).
我还需要为自己的课程这样做.我已经为他们实现了HashCode和Equals.它们(主要)是(比如)MySuperClass的子类.是否可以实现该功能:
void MyAssertAreEqual(IEnumerable<MySuperClass> expected,
IEnumerable<MySuperClass> actual);
Run Code Online (Sandbox Code Playgroud)
这样我可以打电话:
IEnumerable<MyClassA> expected = ...;
IEnumerable<MyClassA> actual = ...;
MyAssertAreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)
而不是为每个班级写这个
NUnit和MSTest(可能还有其他的)都有一个CollectionAssert类
| 归档时间: |
|
| 查看次数: |
2546 次 |
| 最近记录: |