Я написал абстрактный базовый класс для модульных тестов, который устанавливает достаточно среды для наших тестов. Класс предоставляет некоторые биты среды выполнения в качестве свойств, типы которых меняются в зависимости от теста (типы свойств являются аргументами типа, указанными в наследуемом конкретном классе теста).
Это все хорошо, за исключением того, что сотрудник заметил, что он не может просматривать какие-либо свойства класса в отладчике. Оказывается, причина в том, что у него не было полей, определенных в его наследующем классе, и CLR оптимизировал то или иное, так что отладчик не мог отобразить свойства. Можно ли как-то предотвратить это в базовом классе, или мне приходится говорить всем, что им нужно определить хотя бы одно поле, которое используется где-то во время тестов?
Edit:
Похоже, что вероятным виновником должны быть настройки оптимизации / отладки. Тем не менее, я собираю приложение из Visual Studio в режиме отладки, я дважды проверил, что все проекты настроены на отладочную сборку, и ни один из проектов в этом решении не имеет установленного флага Optimize.
Возможно, также было бы уместно отметить, что я использую MSTest и средство запуска тестов Visual Studio.
Редактировать 2:
Под «не удается просмотреть свойства» я имею в виду, когда я оцениваю свойство в Quickwatch и получаю красный восклицательный знак и текст ошибки «Не удалось оценить выражение». И чтобы вы не подумали, что я полностью ошибаюсь с моими подозрениями, добавление поля экземпляра, которое инициализируется в методе инициализации теста, устраняет проблему ...
Редактировать 3:
Проверен результат сборки. Я заметил, что компилятор вызывается с этими параметрами:
/debug+
/debug:full
/optimize-
/define:DEBUG,TRACE
Я должен подумать, что этого будет достаточно, чтобы остановить это, но вот, пожалуйста. :)