我正在做一些单元测试,我想知道是否有任何方法可以测试列表是否按其包含的对象的属性排序。
现在我正在这样做,但我不喜欢它,我想要一个更好的方法。有人可以帮帮我吗?
// (fill the list)
List<StudyFeedItem> studyFeeds =
Feeds.GetStudyFeeds(2120, DateTime.Today.AddDays(-200), 20);
StudyFeedItem previous = studyFeeds.First();
foreach (StudyFeedItem item in studyFeeds)
{
if (item != previous)
{
Assert.IsTrue(previous.Date > item.Date);
}
previous = item;
}
最佳答案
如果您使用的是 MSTest,您可能想看看 CollectionAssert.AreEqual .
Enumerable.SequenceEqual可能是在断言中使用的另一个有用的 API。
在这两种情况下,您都应该准备一个包含预期顺序的预期列表的列表,然后将该列表与结果进行比较。
这是一个例子:
var studyFeeds = Feeds.GetStudyFeeds(2120, DateTime.Today.AddDays(-200), 20);
var expectedList = studyFeeds.OrderByDescending(x => x.Date);
Assert.IsTrue(expectedList.SequenceEqual(studyFeeds));
关于c# - 如何检查列表是否已排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940214/