表达LINQ .Single()语句是显式的NUnit Test

时间:2015-02-05 14:34:56

标签: c# nunit

我有以下测试:

[Test]
public void ListContainsAnObjectOfTypeFoo()
{
    list.Single(t => t.GetType() == typeof(foo));
}

这在测试抛出异常的上下文中“起作用”,如果该类型的项不存在或存在多次,则失败。

然而,语义上并不是那么好。有没有什么方法可以测试Single()条件使用显式NUnit断言?我想知道CollectionAssert中是否有一个我无法看到的秘密。

3 个答案:

答案 0 :(得分:2)

取代Single,取得计数并将其与1进行比较,如:

list.Count(t => t.GetType() == typeof(foo)) ! = 1

答案 1 :(得分:1)

您可以使用.Count(condition)==1

因此,在您的情况下使用带有条件的断言:

list.Count(t => t.GetType() == typeof(foo)) == 1

答案 2 :(得分:0)

回到五年后,NUnit现在有了一个更好的解决方案!

Assert.That(list, Has.Exactly.One.TypeOf<foo>());