У меня есть тестовая установка, где у меня есть много очень похожих модульных тестов, которые мне нужно выполнить. Например, существует около 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);
}
Итак, я ищу предложения для создания группы модульных тестов, которые принимают объект конфигурации, но не требуют от меня генерации множества тестовых методов. Похоже, что это может потребовать генерации кода, но я бы хотел решить это без этого.