Каков хороший метод для построения и запуска многих подобных модульных тестов? - PullRequest
0 голосов
/ 21 апреля 2010

У меня есть тестовая установка, где у меня есть много очень похожих модульных тестов, которые мне нужно выполнить. Например, существует около 40 хранимых процедур, которые необходимо проверить на наличие в целевой среде. Однако я бы хотел, чтобы все тесты были сгруппированы по подразделениям. Таким образом, было бы 40 экземпляров очень похожего TestMethod в 40 отдельных классах. Вроде хромая. Еще одна вещь: каждая группа тестов должна быть в своем собственном решении. Таким образом, у бизнес-единицы A будет решение под названием Tests.BusinessUnitA.

Я думаю, что могу все это настроить, передав объект конфигурации (с именем хранимого процесса для проверки, среди прочего) в класс TestRunner.

Проблема в том, что я теряю атомарность своих модульных тестов. Я не смог бы запустить только один из тестов, мне пришлось бы запустить все тесты в классе TestRunner.

Вот как выглядит код в это время. Конечно, это красиво и компактно, но если Тест 8 не пройден, у меня нет возможности запустить только Тест 8.

  TestRunner runner = new TestRunner(config, this.TestContext);

  var runnerType = typeof(TestRunner);
  var methods = runnerType.GetMethods()
     .Where(x => 
       x.GetCustomAttributes(typeof(TestMethodAttribute), false)
       .Count() > 0).ToArray();

      foreach (var method in methods)
      {
       method.Invoke(runner, null);
      }

Итак, я ищу предложения для создания группы модульных тестов, которые принимают объект конфигурации, но не требуют от меня генерации множества тестовых методов. Похоже, что это может потребовать генерации кода, но я бы хотел решить это без этого.

Ответы [ 2 ]

0 голосов
/ 09 мая 2010

Моим решением было поместить все тесты в их собственную сборку, украсить их атрибутами, а затем отразить в сборке для выполнения тестов. Имеет больше смысла, чем тесты на основе данных.

0 голосов
/ 21 апреля 2010

Можно ли использовать тесты, управляемые данными? http://msdn.microsoft.com/en-us/library/ms182519(VS.80).aspx

Затем вы можете исключить строки, которые ранее были переданы ...

...