Я хочу написать тесты для моей библиотеки с помощью MSTest. После запуска TestCase1 он что-то делает, устанавливает MyData (закрытое статическое поле внутреннего класса моей библиотеки) следующим образом:
internal MyClass{private static int MyData;}
При запуске TestCase2 эти данные будут повторно использоваться.
Iнаписали метод Reset и вызвали его в содержимом метода TestInitialize, например:
var type = MyAssembly.GetType("MyClass");
var privateType = new PrivateType(type);
privateType.SetStaticField("MyData", 0);
Как видите, метод сбросит статическое поле на 0, но ему нужно знать имя атрибута и класса ("MyClass""и" MyData ").
Теперь, я тестирую с моей обфусцированной dll, тест не пройден, потому что имя будет изменено. Кроме того, в моей библиотеке, я имею в виду сторонние библиотеки, она также может хранить данные в статических полях. Это заставит TestCase2 повторно использовать данные, которые были установлены TestCase1, и TestCase2 всегда будет неуспешным.
Как я могу сбросить все статические поля в TestInitialize?
** ОБНОВЛЕНИЕ:
Я вижу решение, которое позволяет запускать каждый тестовый пример на отдельном домене приложений, это может замедлиться, но я могу попробовать. Проблема в том, что я не знаю, как правильно запустить каждый контрольный пример в отдельном домене приложений?