如何测试IEnumerable在MBunit中是否包含SomeClass类的所有项目?
我曾经使用Visual Studio单元测试框架并找到了CollectionAssert.AllAreInstancesOfType
或其他东西来检查它。
但我如何在MBunit中完成?
答案 0 :(得分:1)
Jeff Brown,Gallio项目的首席开发人员为该请求打开了issue。我们将实现一些专用断言:Assert.ForAll
和Assert.Exists
。它们应该在Gallio / MbUnit(v3.1)的下一个版本中提供,但是你可以在几天内下载每日版本来更快地使用它们(敬请关注)。
修改强>
从Gallio/MbUnit v3.1.213开始,您可以使用Assert.ForAll<T>(IEnumerable<T>, Predicate<T>)
。
[Test]
public void AllMyObjectsShouldBeStrings()
{
var list = GetThemAll();
Assert.ForAll(list, x => x.GetType() == typeof(string));
}
答案 1 :(得分:0)
我在MBUnit CollectionAssert
课程中没有看到任何可以帮助你的内容
您可以轻松编写自己的(未经测试)。
public class MyCollectionAssert
{
public void CollectionAssert(IEnumerable source, Predicate<object> assertion)
{
foreach(var item in source)
{
Assert.IsTrue(assertion(item));
}
}
public void AllAreInstancesOfType(IEnumerable source, Type type)
{
return CollectionAssert(source, o => o.GetType() == type);
}
}
我假设你实际上是指IEnumerable,而不是编译器强制执行类型安全的IEnumerable<SomeClass>
。要使用此扩展方法,请致电:
MyCollectionAssert.AllAreInstancesOfType(myList, typeof(SomeClass));