Я пытаюсь создать тестовый класс, который организует свои тестовые методы, используя внутренние классы.Я хотел бы, чтобы этот класс был абстрактным со способностью устанавливать статическое свойство, чтобы это свойство могло быть введено.Вот пример того, о чем я говорю:
[TestClass]
public abstract class BaseUnitTest
{
public static string InjectedProperty;
public static string GetInjectedString()
{
return InjectedProperty;
}
[TestClass]
public class WhenFoo
{
[TestMethod]
public void TestFoo()
{
string str = GetInjectedString();
}
}
}
[TestClass]
public class DeriverdUnitTest : BaseUnitTest
{
[ClassInitialize]
public void SetUp()
{
InjectedProperty = "Injected Property";
}
}
Однако я не вижу класса DerivedUnitTest + WhenFoo + TestFoo (), отображаемого в моем виде модульного теста.Я использую Visual Studio 2010. Я предполагаю, что при переопределении BaseUnitTest я не переопределяю и его внутренние классы.Полагаю, я мог бы сделать его внутренние классы абстрактными и переопределить их позже, но по мере увеличения сложности моего тестового класса это станет действительно раздражающим.Может кто-нибудь объяснить, почему это происходит и как я могу это исправить?
Спасибо.
Редактировать:
Я чувствую, что мне нужно лучшеобъясните мои причины желания сделать это.Мы хотели бы внедрить стандарт тестирования, который очень многословен в своем наименовании.Поэтому тестовый класс будет выглядеть примерно так:
[TestClass]
public abstract class BaseUnitTest
{
public static string InjectedProperty;
public static string GetInjectedString()
{
return InjectedProperty;
}
[TestClass]
public class WhenFooIsCalled
{
[TestClass]
public class AndTheArgumentIsNull
{
[TestMethod]
public void AnArgumentNullExceptionShouldBeThrown()
{
string str = GetInjectedString();
}
}
}
}
Преимущество этого заключается в том, что при открытии тестового представления в Visual Studio и отображении столбцов имени метода и имени класса вы получаете нечто, похожее на это:
BaseUnitTest+WhenFooIsCalled+AndTheArgumentIsNull AnArgumentNullExceptionShouldBeThrown()
Это позволяет с первого взгляда понять, что должен делать провальный тест из нескольких сотен проходных тестов.
Основная причина, по которой я хочу иметь возможностьПереопределение абстрактного BaseUnitTest связано с тем, что при выполнении всех тестов, которые содержались в BaseUnitTest, все они добавляются в DerivedUnitTest и отображаются в представлении тестов в Visual Studio.
Еще раз спасибо.