N单位字母顺序断言

时间:2014-12-31 09:34:41

标签: c# unit-testing nunit

我在网站上有一个搜索框,根据关键字返回搜索结果(将这些搜索结果存储为c#中的列表)

我需要测试一些过滤器选项,其中一个是产品名称A-Z。

选择此选项后,搜索结果应相应地进行排序。

无论如何断言这是针对N单位的列表进行的吗?

2 个答案:

答案 0 :(得分:0)

是的,您可以使用CollectionAsserts succeed if the two collections contain the same objects, in the same order。当然,这需要您对期望的集合进行排序,例如:

var expected = new[] { "A", "B", "C" };
var actual = ...
CollectionAssert.AreEqual(expected, actual);

使用约束模型和Enumerable.SequenceEqual

可以实现类似的效果
var expected = new[] { "A", "B", "C" };
var actual = ...
Assert.That(expected.SequenceEqual(actual), Is.True);

但是这会有较少的本地化失败消息( true vs false ),而不是指向集合不同的地方(CollectionAssert就是这种情况)。

答案 1 :(得分:0)

如果您只是需要确保它们已排序,请使用constraint assertion syntax。它很简单:

string[] yourActualSearchResults = new string[] ( "alpha", "beta", "gamma" );

Assert.That(yourActualSearchResults, Is.Ordered);