2012-01-05 5 views
1

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

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

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

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

В первый раз я побежал это, я получил сообщение:

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

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

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

ответ

2

Я нашел проблему ... Я модифицировал файл .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

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