Фон: у меня есть куча модульных тестов в .NET
, для которых необходимо настроить некоторые данные конфигурации для запуска. Первоначально я использовал TestInitialize
и TestCleanup
для настройки и сбрасывания данных конфигурации вокруг каждого теста; однако для всего набора тестов достаточно одной установки, поэтому я предпочел бы вместо этого использовать ClassInitialize
и ClassCleanup
.Почему атрибут ClassCleanup должен быть статическим?
Проблема: Когда я изменить атрибут из TestInitialize
в ClassInitialize
и запустить тесты, я получаю следующее сообщение об ошибке:
MyTestClass.ClassInit has wrong signature. The method should be marked static.
Каковы причины дизайна позади этого атрибута, требующего его метод быть статическими? Все мои методы тестирования - это методы экземпляра, поэтому я бы предположил, что хотя бы один экземпляр моего тестового класса создается где-то для их запуска. Почему этот экземпляр не будет отвечать за очистку после?
Я проверил MSDN, и они явно не упоминают статическое требование, хотя у них есть хороший пример его использования.
вы можете показать на '[ClassInitialize]' декорированный код метода? это должно быть как «public static void MethodName (контекст TestContext)» в VB.Net 'Public Shared Sub MethodName (ByVal testContext As TestContext)' – Damith
Я знаю, что он должен быть статическим; сообщение об ошибке достаточно ясно. Мой вопрос заключается в том, почему он не может быть методом экземпляра. – user1968292