|
MSTest генерация сборки имитаций
|
|||
---|---|---|---|
#18+
Я пытаюсь использовать для тестирования MSTest. Сделал проект библиотеки MyLib с указанным ниже кодом. Cделал проект для теста. Добавил в проект для теста ссылку на MyLib. Теперь пытаюсь сгенерировать код сборки имитаций для создания заглушек и оболочек. Код генерится, но в нем куча ошибок, касающихся объекта Range, например: Имя типа или пространства имен "Range" отсутствует в пространстве имен "ml::Microsoft.Office.Interop.Excel" (пропущена ссылка на сборку?) [c:\Users\vin\documents\visual studio 2013\Projects\MyLib\UnitTestProject1\obj\Debug\Fakes\ml\f.csproj] c:\Users\vin\documents\visual studio 2013\Projects\MyLib\UnitTestProject1\f.cs 100 114 UnitTestProject1 1. Как сделать так, чтобы Range стал видимым в сборке имитаций? 2. Как отказаться от попытки MSTest сделать заглушку для Range? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 20:08 |
|
MSTest генерация сборки имитаций
|
|||
---|---|---|---|
#18+
Решил. Распишу подробнее для тех, кто с этим встретится. План был такой - сгенерировать файл с заглушками и на базе него сделать свой, исправив ошибки. При работе понял как управляется генерация при помощи файла fakes. Оказывается этот файл совсем не нужно удалять. Прямо в нем можно нужно указать что генерировать, а что нет, а при перестроении проекта сборка имитаций будет сама перегенерирована по новым правилам. Так как мне нужна была только заглушка на интерфейс я сделал так: <Fakes xmlns=" http://schemas.micro...m/fakes/2011/"> <Assembly Name="MyLib1"/> <StubGeneration> <Clear/> <Add Interfaces ="true"/> </StubGeneration> <ShimGeneration> <Clear/> </ShimGeneration> </Fakes> Т.е. я указал сделать заглушки на все интерфейсы, ну а так как он у меня один - то будет сделана заглушка на IGetMyVal. После этого нужно взять сгенерированный код. Для этого нужно встать на проект теста в проводнике решения и нажать кнопку "Показать все файлы" (вверху проводника). После этого в каталоге obj\Debug\Fakes\ml1 нужно встать на файл f.cs и скопировать его содержимое. ml1 - это alias, который дала для моей библиотеки MyLib1 система генерации кода. В Вашем случае будет другое. После этого в сборке ТЕСТА нужно добавить пустой класс и скопировать в него содержимое из буфера клавиатуры (из f.cs). Класс нужно создавать именно в сборке для теста. Если попытаться сделать отдельный модуль и в нем сделать класс (и сделать указатель на него в тестовой сборке), то получим ошибку компиляции о что-то типа "... тип не может работать через границы сборки..." Теперь подправляем полученный класс. Нужно сделать следующее: 1. Закомментировать строки extern... и [assembly... 2. Удалить mqttf:: и ml1:: (Про наименование ml1 я уже писал выше). Ошибка заключается в том, что Range генератор кода помещает под ml1! Все. Заглушка готова. Можно ей пользоваться! Ах, да. Удалите файле MyLib1.fakes (имя_вашего_модуля.fakes) из каталога Fakes - это удалит генерацию кода сборки имитаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2015, 15:31 |
|
|
start [/forum/topic.php?fid=20&fpage=75&tid=1401157]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 421ms |
0 / 0 |