C#等效于hasSameSizeAs()

时间:2015-03-26 14:20:04

标签: c#

要检查两个Iterable是否具有相同的大小,我可以用Java编写assertJ

assertThat(elvesRings).hasSameSizeAs(trilogy);

C#中最接近的等价物是什么?

到目前为止我只有

Assert.AreEqual(elvesRings.Count, trilogy.Count);

3 个答案:

答案 0 :(得分:0)

使用FluentAssertions,您可以使用:

elvesRings.Should().HaveSameCount(trilogy);

图书馆链接: https://www.nuget.org/packages/FluentAssertions

答案 1 :(得分:0)

最简单的方法是在每个IEnumerable<T>上调用count(类似于Java的Iterable接口):

Assert.AreEqual(elvesRings.Count(), trilogy.Count());

请注意,Count被称为方法而不是属性。这是因为当使用IEnumerable<T> count是一个扩展方法时,并且在没有参数的情况下调用它时,它只计算底层集合中的所有内容,即使该集合没有Count属性。

这适用于MS-TEST和NUnit。

答案 2 :(得分:0)

很容易推出自己的扩展方法来做到这一点,这有点像:

public static bool hasSameSizeAs(this IEnumerable first, IEnumerable second)
{
   return first.Count() == second.Count();
}

免责声明:错误检查,IEnumerable的潜在多次迭代等。