在尝试为某些单元测试创建一个痣时,我注意到某些功能没有被“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内部构建时摩尔生成不起作用,但它在命令提示符下运行良好?
答案 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)
在修改了已装配的装配后,请务必重新测试测试项目。在测试项目上使用“干净”操作也可以解决这个问题。