Как передать несколько наборов данных в XML в MbUnit

#unit-testing #mbunit #gallio

#модульное тестирование #mbunit #gallio

Вопрос:

Предположим, у меня есть модуль кода, который принимает переменное количество потоков данных:

 Public sub Process(Dt As DataTable)
End Sub
  

Я хочу передать один или несколько тестовых потоков данных в мой тестовый модуль MbUnit:

Тест 1:

 DataRow 1: Green, 23
DataRow 2: Green, 24
  

Тест 2:

 DataRow 1: Green, 23
DataRow 2: Green, 24
DataRow 3: Blue, 44
DataRow 4: Red, 55
  

Как бы мне настроить XML-файл данных с этими тестами в MbUnit?

Вопрос 2:

Предположим, я хочу передать метаданные о тестовых данных? Например, «Название цвета» или «Расстояние». Как бы мне добавить эти метаданные в XML-файл?

Спасибо,

Ред

Ответ №1:

В Gallio Wiki есть некоторая документация, в которой объясняется, как использовать XML-источник данных для ваших тестовых параметров и как связать их с метаданными. Но, к сожалению, встроенный атрибут источника XML-данных не настолько гибок.

Я предполагаю, что лучшее решение — это создать свою собственную фабрику данных. Возможно, что-то вроде этого:

 [TestFixture]
public class MyFixture
{
  [Test, Factory("GetSampleDataTables")]
  public void MyTest(DataTable dataTable)
  {
     var foo = new Foo();
     foo.Process(dataTable);
     // Make assertions...
  }

  public static IEnumerable<object> GetSampleDataTables()
  {
    foreach (...) // Read your XML data file...
    {
      var sampleDataTable = new DataTable();
      // Populate your sample data table from XML...
      yield return sampleDataTable;
    }
  }
}