Создание родинок не создает все объекты - PullRequest
1 голос
/ 05 января 2012

Пытаясь создать крота для некоторых юнит-тестов, я заметил, что некоторые функции не были "moled".Некоторые функции появлялись в файле xxx.moles.xml, а другие - нет.

Чтобы решить эту проблему, я попытался переустановить «Pex and Moles», удалить файлы в папке MolesAssembly, перезагрузить компьютер,и т.д.

Наконец, я просто открыл окно консоли и запустил команду moles.exe из командной строки.

"c:\program files\microsoft moles\bin\moles.exe" assembly.dll /op:"MolesAssemblies" /msbuild:"c:\windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"

При первом запуске я получил сообщение:

Moles: информация: компиляция: хеш метаданных сборки без изменений, пропуск генерации кода.

После удаления родинок в папке MolesAssemblies я снова запустил команду moles.exe ивсе мои функции теперь отображаются в файлах xxx.moles.dll и xxx.moles.xml.

Кто-нибудь знает, почему создание родинок не работает при сборке в Visual Studio 2010, но прекрасно работает изкомандная строка?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Я обнаружил проблему ... Я изменил файл .moles раньше, и были добавлены только определенные классы.Мне просто нужно было добавить еще «TypeName», и классы / функции были включены.

Причина, по которой он «работал» с помощью команды moles.exe, заключалась в том, что я не использовал файл .moles (я простоссылался на сборку).Я изменил параметры moles.exe, чтобы включить файл .moles и сборку, и результаты были идентичны выводу, сгенерированному Visual Studio.Как только я заметил, что другие части кода ломались, я понял, что файл .moles был неправильным.

У меня было что-то вроде этого ...

<Moles xmlns="http://schemas.microsoft.com/moles/2010/" >
  <Assembly Name="Assembly.name" />
    <StubGeneration>
        <Types>
            <Clear />
            <Add FullName="Fullname_1_0" />
        </Types>
    </StubGeneration>
    <MoleGeneration>
        <Types>
            <Clear />
            <Add FullName ="Fullname_1_0" />
        </Types>
    </MoleGeneration> 
</Moles>

Мне нужна секунда 'Добавить '

<Moles xmlns="http://schemas.microsoft.com/moles/2010/" >
  <Assembly Name="Assembly.name" />
    <StubGeneration>
        <Types>
            <Clear />
            <Add FullName="Fullname_1_0" />
        </Types>
    </StubGeneration>
    <MoleGeneration>
        <Types>
            <Clear />
            <Add FullName ="Fullname_1_0" />
            <Add TypeName="AdditionalClass"/>
        </Types>
    </MoleGeneration> 
</Moles>
0 голосов
/ 06 января 2012

Обязательно перестройте тестовый проект после изменения сборки, которая подвергается моделированию.Использование действия «clean» в тестовом проекте также исправит эту проблему.

...