Мое мнение таково, что ваша тестовая структура должна отражать структуру вашего объекта
так что если у вас есть автомобиль класса, который унаследовал от автомобиля класса
тогда у вас должен быть Class TestCar, который наследуется от Class TestVehicle
Выполнение этой тестовой машины автоматически наследует правильные тесты для всех тестов транспортных средств. Это означает, что если функция переопределена в автомобиле, она, скорее всего, прервет тест, подчеркнув, что в автомобиле необходим переопределенный тест для поддержки нового поведения, тест не сломан, тогда переопределение было, вероятно, излишним
например
class Vehicle
{
public virtual bool LicenceRequired
{
get{throw new NotImplmentedException()
}
}
class Bicycle:Vehicle
{
public override bool LicenceRequired
{
get{return false;}
}
}
class Car:Vehicle
{
public override bool LicenceRequired
{
get{return true;}
}
}
class TestVehicle
{
public virtual Void LicenceRequiredTest()
{
Try
{
LicenceRequired
Assert.Fail();
}
Catch(){}
}
}
class TestBicycle:TestVehicle
{
public override void LicenceRequiredTest()
{
Assert.IsFalse(LicenceRequired);
}
}
class TestCar:TestVehicle
{
public override void LicenceRequiredTest()
{
Assert.IsTrue(LicenceRequired);
}
}
ПРИМЕЧАНИЕ: Наследование следует использовать только при тестировании унаследованных объектов, а не только потому, что вы хотите выполнить один и тот же тест на 10 не связанных объектах. если вы хотите сделать это, я бы предложил статический вспомогательный класс