我想知道 .net 框架中实现 IEnumerable 的任何类是否不实现 ICollection 接口。
我问它是因为我无法在我编写的以下扩展方法中获得 100% 的代码覆盖率:
public static int GetSafeCount<T>(this IEnumerable<T> nullableCollaction)
{
if (nullableCollaction == null)
{
return 0;
}
var collection = nullableCollaction as ICollection<T>;
if (collection != null)
{
return collection.Count;
}
return nullableCollaction.Count();
}
最后一行没有包含在我的任何测试中,我找不到正确的类来实例化以覆盖它。
我的测试代码是:
[Test]
public void GetSafeCount_NullObject_Return0()
{
IEnumerable<string> enumerable=null;
Assert.AreEqual(0, enumerable.GetSafeCount());
}
[Test]
public void GetSafeCount_NonICollectionObject_ReturnCount()
{
IEnumerable<string> enumerable = new string[]{};
Assert.AreEqual(0, enumerable.GetSafeCount());
}