由于我们公司没有使用单元测试,我正在教自己对我自己的代码进行单元测试.我正在使用标准的.net测试框架进行一些非常基本的单元测试.
我的方法返回a IEnumerable
,我想测试它的输出.所以我创建了一个IEnumerable
期望测试它.我以为我记得那里有Assert.ArePartsEqual
类似的东西,但我似乎无法找到它.
简而言之,我如何测试两个是否IEnumerable
包含相同的字符串?
我不知道您指的是哪个"标准.net测试框架",但如果是Visual Studio Team System Unit测试的东西,您可以使用CollectionAssert.
你的测试将是这样的:
CollectionAssert.AreEqual(ExpectedList, ActualList, "...");
更新:我忘了CollectionAssert需要一个ICollection接口,所以你必须调用ActualList.ToList()来让它编译.返回IEnumerable是一件好事,所以不要只为测试改变它.
你想要SequenceEqual()
扩展方法(LINQ):
string[] x = { "abc", "def", "ghi" }; Listy = new List () { "abc", "def", "ghi" }; bool isTrue = x.SequenceEqual(y);
要不就:
bool isTrue = x.SequenceEqual(new[] {"abc","def","ghi"});
(如果它们的长度不同,或者任何项目不同,它将返回false)
我有一个例子,我用于"在60分钟内实现LINQ to Objects"谈话.
它也在我的MoreLinq项目中.在这里尝试过它,它包裹得非常糟糕.刚刚从GitHub抢 ...