NUnit CollectionConstraints异常

时间:2011-11-18 13:42:21

标签: c# nunit nunit-2.5

我在.NET 3.5 C#应用程序中使用NUnit 2.5.6.10205。我正在使用NUnit的Collection Constraint断言IEnumerable是否按参数排序。

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

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

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

另外,有什么方法可以使用Lambda表达sort属性吗?对属性使用文字字符串会使其变脆。

2 个答案:

答案 0 :(得分:2)

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

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

来自NUnit:“对集合中的每个项目应用约束,只有在所有项目都成功时才会成功。”

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

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

希望其他人会在将来发现这个问题/答案有用。

答案 1 :(得分:1)

不需要All,请尝试:

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