После нескольких часов борьбы мне, наконец, удалось внедрить тесты в проект, который я хотел.
Вот некоторые подробности моего опыта работы с Pex и Moles (я также использую CodeContracts и советую об этом, но здесь это не имеет места) с составным приложением Prism.
- В основном Pex и Moles касаются двух вещей: классы и интерфейсы фреймворка .Net и классы и интерфейсы Prism. Они не просты в использовании из-за их низкого уровня (системы) и внедрения зависимости (Prism).
- Первым делом я впервые запустил Pex в моем проекте, чтобы появились ошибки. Там я нашел успешный тест, который попросил Пекса сгенерировать. Он автоматически создает тестовый проект со ссылками Pex.
- Там я определил, какие классы и интерфейсы нужно было заглушить: это касается в основном интерфейсов Prism, таких как IEventAggregator и IRegionManager. Эти интерфейсы имеют реализации и могут быть заглушены Moles. Все, что нужно - это щелкнуть правой кнопкой мыши ссылку Prism (в разделе «Ссылки проекта») и нажать «Добавить родинки для Prism ». Автоматически создать сборку, содержащую заглушки для всех классов Prism, автоматически используемые Pex при следующем исследовании. Будьте осторожны с этим инструментом. Моя первая реакция была на "родинки" всего (Призма, Система, зависимости ..). Это смерть для тестового проекта. Я не узнал, как подавить родинки. Итак, когда это сделано, это сделано!
- Я советую «моль» зависимостей по частям и подумать, прежде чем делать это. Иногда Pex не может создать объект из-за неправильного определения базового параметра, что приводит к сбою создания объекта (отчет Pex не показывает разницу между отсутствием реализации и ошибкой на более низком уровне. Он всегда говорит: "* MyClass объект не может быть создан "и предлагается создать фабрику)
- Я создал фабрики для классов, которые не могли бы ошарашить Моли. Особенно это не работает для событий, работающих с агрегатором событий (наследуется от CompositionPresentationEvent).
- Будьте терпеливы и решительны. Я нахожу, что Пекс все еще экспериментален и "нет пути назад". Лучший способ устранить мятежные сообщения об ошибках - удалить тестовый проект и начать заново с Pex Исследование.
Если кто-то может помочь с моим ответом и дать более подробную информацию и исправления, это будет более чем приветствоваться!