【发布时间】:2013-08-05 10:06:17
【问题描述】:
我写了一个小的帮助方法contentsToArrayList。如果我将一个实现 ICollection 的对象传递给它,它会返回一个 ArrayList,其中包含与原始对象相同的元素。如果我将另一个对象传递给它,它会返回一个包含对象本身的 ArrayList。
现在我想测试这个方法。我的单元测试看起来像这样(有点缩写,我包含了更多的测试用例):
//Arrange
int a = 1;
ArrayList aAsArrayList = new ArrayList();
aAsArrayList.Add(a);
List<int> f = new List<int>() { 4, 5, 6 };
ArrayList fAsArrayList = new ArrayList(f);
//Act
ArrayList aReturned = contentsToArrayList(a);
ArrayList fReturned = contentsToArrayList(f);
现在我不确定如何编写我的断言。基本上,我想确保 aAsArrayList 包含与 aReturned 相同的对象。但是 ArrayList 是一个引用类型,我不确定它是否定义了值相等。我可以使用 aReturned == aAsArrayList 之类的方法轻松比较数组列表,还是必须比较数组列表的每个成员?
【问题讨论】:
-
你在使用 nunit 吗?如果是这样,请使用 CollectionAssert nunit.org/index.php?p=collectionAssert&r=2.4
-
@doctorlove 不,我正在使用 Visual Studio 中的内置测试框架。但感谢您提供 nunit 解决方案。
-
尽可能避免使用 ArrayList。只是说...
标签: c# collections equality