创建Moles不会创建所有对象

时间:2012-01-05 18:55:00

标签: moles

在尝试为某些单元测试创​​建一个痣时,我注意到某些功能没有被“mo”。某些函数出现在xxx.moles.xml文件中,而其他函数则不是。

要解决此问题,我尝试重新安装'Pex和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:info:编译:程序集元数据哈希不变,   跳过代码生成。

删除MolesAssemblies文件夹中的moles后,我再次运行moles.exe命令,我的所有函数现在都出现在xxx.moles.dll和xxx.moles.xml文件中。

有没有人知道为什么在Visual Studio 2010内部构建时摩尔生成不起作用,但它在命令提示符下运行良好?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

在修改了已装配的装配后,请务必重新测试测试项目。在测试项目上使用“干净”操作也可以解决这个问题。