Модульное тестирование в Visual Studio 2010 - Можно ли продолжить TestMethod после неудачного утверждения? - PullRequest
4 голосов
/ 18 августа 2011

У меня есть тестовый проект в visual studio 2010. У меня есть TestMethod.Внутри этого я хочу перебрать список вещей и проверить каждый.Итак, у меня есть 1 тест, и я хочу подтвердить N раз (по одному разу для каждого элемента в списке).

Тем не менее, я не хочу останавливаться, если не получится.Я хочу продолжить, а затем сообщать обо всех сбоях вместе.

Пример:

[TestMethod]
public void Test()
{
   foreach (item in list)
   {
      // if fail, continue on with the rest
      Assert(if fail, add to output list);
   }

   output_failures_all_at_once;
}

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

Я бы сделал что-то вроде этого:

// Assert that each item name is fewer than 8 characters.
[TestMethod]
public void Test()
{
   List<string> failures = new List<string>();

   // However you get your list in the first place
   List<Item> itemsToTest = GetItems(); 

   foreach (Item item in itemsToTest )
   {
      // if fail, continue on with the rest
      if (item.Name.Length > 8 )
      {
         failures.Add(item.Name);
      }
   }

   foreach (string failure in failures)
   {
      Console.WriteLine(failure);
   }

   Assert.AreEqual(0, failures.Count);
}
0 голосов
/ 18 августа 2011

Вы можете попробовать предложение Тома и вместо

foreach (string failure in failures)
{
   Console.WriteLine(failure);
}

сделать

var errorMessage = failures.Aggregate((current, next) => current + ", " + next);
Assert.AreEqual(0, failures.Count, errorMessage);

Кстати, метод сбоя должен содержать логику, которая обнаруживает сбой в элементе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...