Как вы проверяете, что IEnumerable<SomeClass> содержит все элементы класса SomeClass в MbUnit?

StackOverflow https://stackoverflow.com/questions/1082224

  •  22-08-2019
  •  | 
  •  

Вопрос

Как вы проверяете, что IEnumerable содержит все элементы класса SomeClass в MbUnit?

Однажды я использовал фреймворк модульного тестирования Visual Studio и обнаружил CollectionAssert.AllAreInstancesOfType или что-то, чтобы проверить это.

Но как мне это сделать в MbUnit?

Это было полезно?

Решение

Я ничего не видел в 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));

Другие советы

Джефф Браун, ведущий разработчик проекта Gallio открыл проблема за эту просьбу.Мы собираемся реализовать несколько специальных утверждений: 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));
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top