c# - 如何检查列表是否已排序?

标签 c# unit-testing list html-lists

我正在做一些单元测试,我想知道是否有任何方法可以测试列表是否按其包含的对象的属性排序。

现在我正在这样做,但我不喜欢它,我想要一个更好的方法。有人可以帮帮我吗?

// (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/

相关文章:

node.js - 即使调用计数为 1,Sinon spy 断言也会失败

unit-testing - 如何测试 Wireshark 解剖器?

python - 将输出包含在列表中

c# - IEnumerable 项目消失 - 存在于 DAL 但不存在于调用者中

javascript - 找不到动态 asp :Control inside a Gridview using JQuery

c# - 使用 swagger 的 Web API 文档

python - 如何知道变量是否在列表中对象的属性中?

c# - 我可以传递查询字符串之类的 Web 方法参数吗?

javascript - 使用 javascript 的 Mocha 和 Sinon 单元测试问题

jquery - 使用Jquery将单个UL LI列表转换为基于类的层次嵌套列表