Модульные Тесты И Наследование

При разработке модульных тестов в Visual Studio часто требуется создать какой-то базовый класс для тестирования базовой логики.

Например, у нас есть этот класс:

[TestClass] public virtual class PersonTestBase {

[Метод испытания] публичная пустота GetNameTest() { //.

} } и его класс-потомок:

[TestClass] public class CustomerTest: PersonTestBase { [TestMethod] public override void GetNameTest() { base.GetNameTest(); } }

Преимущества этого подхода:

  • полная поддержка визуальных инструментов Visual Studio (редактор списка тестов);
  • простота реализации.

Минусы:
  • избыточность кода;
  • создание наследника — это, по сути, копирование и вставка.

Сразу необходимо отметить, что PersonTestBase и CustomerTest должны находиться в одной сборке, иначе тесты в PersonTestBase работать не будут — это ограничение юнит-тестов.

Дополнительную информацию см.

в MSDN. Помимо методов, описанных в msdn, можно сделать так: создаются два проекта: BaseTests и CustomTests; необходимые файлы из BaseTests добавляются в проект CustomTests таким образом: Проект -> Добавить существующий элемент -> Выбрать необходимые файлы -> Добавить как ссылку.

Таким образом файлы физически располагаются в разных проектах, но при компиляции нужные классы оказываются в одной сборке.

Теперь пришло время изменить наш CustomerTest.

[TestClass] public class CustomerTest: PersonTestBase { [TestMethod] public override void CustomerTestMethod() { //.

} }

Мы добавили новый метод, специфичный для клиента, и удалили переопределения методов из базового класса, поскольку нас полностью устраивает его функциональность.

Что мы получили из этого:

  • на самом деле у класса есть 2 тестовых метода: один передан из базового класса, а другой мы реализовали сами.

  • Редактор списка тестов Visual Studio говорит, что мед у нас только один — метод из основного класса не отображается и, соответственно, не запускается.

Обидно, но не смертельно.

На помощь нам приходит стандартная утилита MSTest, которая решает все или почти все наши проблемы.

Преимущества этого метода:

  • мы избавились от недостатков предыдущего способа;
Минусы:
  • нет интеграции с Visual Studio.
Теги: #.

net-разработка #юнит-тестирование #Чулан

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.