我搜索了“Moles”和“Visual Studio Express”标签,但未发现任何问题。这可能意味着我是唯一一个尝试使用Express with Moles的人:)
在Express中,没有诸如“添加痣装配”或“添加mscorlib”之类的选项。
我设法在手动添加一些通常由VS处理的引用后,获得DateTime Y2Kbug的教程。所以,这意味着我可以摧毁System或mscorlib中的任何预先存在的东西,这将是有用的。
我的问题是我似乎无法在SUT中骚扰我自己的任何类或方法。我不相信编译器会看到包含程序集的任何.moles文件。
我通过尝试从Y2kbug教程中排除DateTime来证明(?)这一点,使用:
<MoleGeneration>
<Types>
<Remove FullName="DateTime!" />
</Types>
</MoleGeneration>
但是“bug”像往常一样断言:)
是否可以通过使用我在本论坛中看到的内容生成非系统鼹鼠:stackoverflow.com/questions/6272217/microsoft-moles-dynamically-instrument
Call Microsoft.Moles.Framework.Moles.MoleRuntime.SetMole(Delegate _stub, object _receiver, MethodInfo method);
如果我使用“SetMole”方法,这是否意味着我不需要无论如何都看不到的“汇编”文件?如果是这样,是否可以提供一些使用“SetMole”的例子。 (我不是技术人员。)
正如Mike Christian所说,我使用了moles.exe OrigValueP.dll。这在MolesAssemblies子文件夹中创建了OrigValueP.Moles.dll。
添加OrigValueP.Moles.dll作为测试项目的参考。
在对象浏览器中查看OrigValueP.Moles。我现在看到MOrigValue.AllInstances。这是向前迈出的一大步。
但是,我没有看到任何Moles等同于我的方法:
public string TestString() { return "Original value"; }
[删除了与命令相关的行,“moles.exe OrigValueP.Moles.dll”,因为MC建议我“试图鼹鼠鼹鼠”。]
所以,我有一个问题(我将继续尝试自己回答):为什么TestString()没有Moled方法?
答案 0 :(得分:0)
Moles文档声明Moles与Visual Studio 2008 Professional或Visual Studio 2010 Professional或更高版本兼容。 http://research.microsoft.com/en-us/projects/pex/molestutorial.docx
不要忘记通过命令行执行moles编译器需要按以下顺序执行编译: 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下的mole类型和存根类型 assembly .dll / nf:MyNamespace 获取有关使用情况的详细帮助 moles.exe moles.exe帮助
答案 1 :(得分:0)
[这整个答案已经附在原始问题上了。抱歉所有的混乱。]