Как использовать крота вручную в Visual Studio Express? - PullRequest
0 голосов
/ 25 марта 2012

Я искал теги "Родинки" и "Visual Studio Express" и не нашел вопросов.Это, вероятно, означает, что я единственный, кто пытается использовать Express с родинками:)

В Express нет таких опций, как «Добавить сборку родинок» или «Добавить mscorlib».

Мне удалось заставить учебник для DateTime Y2Kbug работать после добавления вручную нескольких ссылок, которые обычно обрабатывались бы VS.Таким образом, это означает, что я могу измерить любой из предварительно смоделированных вещей в System или mscorlib, что будет полезно.

Моя проблема в том, что я не могу, кажется, измерить любой из моих собственных классов или методов в SUT,Я не верю, что компилятор видит какой-либо из файла .moles, который содержит сборки для моля.

Я доказал (?) Это, пытаясь исключить DateTime из учебника по Y2kbug, используя:

<MoleGeneration>
    <Types>
        <Remove FullName="DateTime!" />
    </Types>
</MoleGeneration>

Но "ошибка" была подтверждена как обычно:)

Возможно ли генерировать несистемные родинки по мере необходимости, используя то, что я видел на этом форуме: stackoverflow.com/questions/6272217 / microsoft-moles-dynamic-instrument

Call Microsoft.Moles.Framework.Moles.MoleRuntime.SetMole(Delegate _stub, object _receiver, MethodInfo method);

Если я использую метод "SetMole", значит ли это, что мне не нужны файлы "сборки", которые все равно не видны?Если это так, можно ли привести некоторые примеры использования «SetMole».(Я не технарь.)

Как подсказал Майк Кристиан, я использовал moles.exe OrigValueP.dll.Это создало OrigValueP.Moles.dll в подпапке MolesAssemblies.

Добавьте OrigValueP.Moles.dll в качестве ссылки на тестовый проект.

Просмотр OrigValueP.Moles в обозревателе объектов.Теперь я вижу MOrigValue.AllInstances.Так что это огромный шаг вперед.

Однако я не вижу ни одного Moles-эквивалента моего метода:

public string TestString() { return "Original value"; }

[Удалены строки, относящиеся к команде "moles.exe OrigValueP.Moles.dll", так как MCпредположил, что я «пытаюсь собрать моля в сборе».]

Итак, у меня есть один вопрос (на который я продолжу пытаться ответить самому себе): почему не было метода Moled для TestString ()?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

[Весь этот ответ был добавлен к первоначальному вопросу.Извините за весь беспорядок.]

0 голосов
/ 01 апреля 2012

Документация Moles гласит, что Moles совместим с Visual Studio 2008 Professional или Visual Studio 2010 Professional или выше.http://research.microsoft.com/en-us/projects/pex/molestutorial.docx

Не забывайте, что выполнение компилятора родинок через командную строку требует выполнения компиляции в следующем порядке: 1. Целевые сборки 2. Родинки (против целевых сборок) 3. Тестовые сборки

Руководство по Moles содержит следующую инструкцию командной строки:

http://research.microsoft.com/en-us/projects/pex/molesmanual.docx

Командная строка генерации кода Структура Moles включает в себя командную строкуприложение, которое может генерировать код, следуя инструкциям в файлах .moles или непосредственно из сборок.По умолчанию инструмент командной строки компилирует типы заглушек и типы молей в сборку и помещает их в подпапку MolesAssemblies.В следующем списке приведены примеры типичного использования.

Создание типов молей и типов заглушек для конкретной сборки moles.exe assembly.dll Создание типов молей и типов заглушек из существующего файла .moles moles.exe assembly.moles Создание типов родинок и заглушек в определенном пространстве имен сборка moles.exe .dll / nf: MyNamespace Получение подробной справки об использовании moles.exe родинок.exe help

...