c# - 如何在 C# 中创建涉及集合的单元测试?

标签 c# unit-testing collections

我在 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/

相关文章:

c# - C# 中的字符串流

c# - 如何优化中继器空白

Python:如何测试是否使用正确的参数调用构造函数

java - 如何在 Google Appengine 代码上使用 Google CodePro Coverage?

c# - 任何好的 C# SIP 库?

c# - 如何在 Xamarin.iOS/Mono 的任务中捕获异常?

c# - 如何设置 NUnit 来运行我的项目的单元测试?

scala - 比较 Scala 可变、不可变集合与 java.util.concurrent.* 集合的微基准测试

Java 对象引用

java - 以升序形式对数组列表进行排序