При разработке unit тестов в Visual Studio часто хочется создать какой-то базовый клас для тестирования базовой лоники. Например у нас есть такой класс:
[TestMethod]
public void GetNameTest()
{
//...
}
}
и его класс наследник:
Плюсы такого подхода:
Мы добавили новый, специфический для Customer, метод и удалили переопределения метода из базового класса, т.к. его функциональность нас полность устраивает. Что мы из этого получили:
[TestClass]
public virtual class PersonTestBase
{
[TestMethod]
public void GetNameTest()
{
//...
}
}
и его класс наследник:
[TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void GetNameTest()
{
base.GetNameTest();
}
}
Плюсы такого подхода:
- полная поддержка визуальных средств Visual Studio (Test List Editor);
- простота реализации.
- избыточность кода;
- создание наследника является по сути copy&paste.
[TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void CustomerTestMethod()
{
//...
}
}
Мы добавили новый, специфический для Customer, метод и удалили переопределения метода из базового класса, т.к. его функциональность нас полность устраивает. Что мы из этого получили:
- фактически, в классе у реализоано 2 тестовы метода: один перешел из базового класса и один мы реализовали сами.
- Visual Studio Test List Editor говорит что у нас только один тетовый медов — метода из бащового класс не отображается и, соответственно, не запускается.
- мы избавились от минусов предыдущего метода;
- нету интеграции с Visual Studio.