NUnit CollectionConstraints exceptions

本文关键字:exceptions CollectionConstraints NUnit | 更新日期: 2023-09-27 18:15:11

我在。net 3.5 c#应用程序中使用NUnit 2.5.6.10205。我使用NUnit的集合约束来断言IEnumerable是否按参数排序。

它似乎对我不起作用,因为我得到一个异常,表明我的实际值不是IEnumreable。allEntities是实现IEnumerable<T>List<T>。我相信NUnit正在寻找一个IEnumerable,而不是IEnumerable<T>,但是IEnumerable<T>实现了IEnumerable。这是一个co/contra variance的问题吗?

Assert.That(allEntities, Is.All.Ordered.By("CreationDate"));

.

System.ArgumentException : The actual value must be an IEnumerable
Parameter name: actual

另外,是否有某种方式我可以使用Lambda来表达排序属性?

NUnit CollectionConstraints exceptions

我使用的是All约束,但这是用来对列表中的每个项目进行断言的,即

// checks that for each T in myList, that it is greater than 5
Assert.That(myList, Is.All.GreaterThan(5));

From NUnit: "对集合中的每个元素应用约束,只有当所有元素都成功时才成功。"

我想测试列表本身的一个属性,所以我想:

// checks that the list itself is ordered by the property CreationDate
Assert.That(allEntities, Is.Ordered.By("CreationDate"));

希望将来有人会觉得这个问题/答案有用。

不需要All,试试:

Assert.That(allEntities, Is.Ordered.By("CreationDate"));