如何在Visual Studio Express中手动使用mole?

时间:2012-03-25 17:50:50

标签: visual-studio-express moles

我搜索了“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方法?

2 个答案:

答案 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)

[这整个答案已经附在原始问题上了。抱歉所有的混乱。]