你如何测试IEnumerable <someclass>在MBunit中是否包含SomeClass类的所有项目?</someclass>

时间:2009-07-04 13:34:26

标签: mbunit

如何测试IEnumerable在MBunit中是否包含SomeClass类的所有项目?

我曾经使用Visual Studio单元测试框架并找到了CollectionAssert.AllAreInstancesOfType或其他东西来检查它。

但我如何在MBunit中完成?

2 个答案:

答案 0 :(得分:1)

Jeff Brown,Gallio项目的首席开发人员为该请求打开了issue。我们将实现一些专用断言:Assert.ForAllAssert.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));