Предполагается, что каждый модульный тест является самостоятельным, но если у нас не было какого -либо способа убить весь процесс для каждого теста, в .NET нет способа гарантировать, что другой тест не сделал ничего, что могло бы повлиять на него. Рассмотрим следующий код, вокруг глобального синглтона, называемого локализацией, который обрабатывает наши ресурсы для разных языков. < /P>
[TestMethod]
public void MaliciousTest()
{
LocalizationResourceManager.Current.PropertyChanged += (sender, e) => throw new ApplicationException("Good luck with that.");
}
[TestMethod]
public void InnocentTest()
{
LocalizationResourceManager.Current.CurrentCulture = CultureInfo.GetCultureInfo("es");
//hago algo
}
< /code>
Если «Innocenttest» работает первым, оба теста проходят. Если сначала работает «MaliciousTest», он пройдет, но «InnocentTest» потерпит неудачу. < /P>
должен ли автор «InnocentTest» быть ответственным за это? Если да, то как они очищают событие, изменившее свойство? Я не знаю ничего, что C# дает нам способ удалить все обработчики событий, прикрепленных кого -то еще. Также очень много, чтобы просить разработчиков знать. Они создали обработчик событий, который сбои в рамках их теста. Поскольку в проекте у нас почти 2000 модульных тестов, отслеживание теста, создавшего этот обработчик, было огромной проблемой. Есть ли простой способ найти, какой тест создал проблему?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -resources