有没有人让鼹鼠正常工作?

时间:2011-07-09 22:22:04

标签: mocking moles pex-and-moles isolation-frameworks

我试图找到关于如何使用摩尔隔离框架的一致描述,但在这个主题上没有找到太多。 到目前为止,我做了以下事情:

  1. here(x86版本)下载痣。
  2. 安装它。
  3. Here guy描述了如何将它与自定义库一起使用。所以我为自己的图书馆添加了鼹鼠汇编。重建后,程序集出现在参考文献中。
  4. 然后我尝试添加使用.Moles命名空间并构建项目,但它失败了一堆错误。 MDateTime的示例也不起作用。 MDateTime没有任何方法。
  5. 考虑到第5次失败尝试让它工作我从系统中卸载它。
  6. 所以问题是:鼹鼠对任何人都有效吗?如果是的话你是怎么到那儿的? 我是否还应该安装pex才能使其正常工作? 如果我想在msbuild脚本的构建服务器上使用它,该怎么办?我看到他们提到了对msbuild的支持,但是有没有人从msbuild使用它的实际经验?

    对我而言,在严肃的开发过程中使用它看起来非常原始。 也许有人有另一种意见?

    感谢。

2 个答案:

答案 0 :(得分:3)

是的,它运作正常。我假设您正在安装v0.94.51023.0。要让Moles正常运行,您必须做一些事情来设置测试类。这些很快成为第二天性 - 别担心!

  1. 您必须为要使用Moles的每个程序集创建“moled程序集”:

    一个。右键单击“解决方案资源管理器”的“参考”节点中的装配,然后选择“添加摩尔装配”。 湾如果您希望破坏.NET Framework程序集,请右键单击“引用”节点,然后选择“为mscorlib添加Moles程序集”。

  2. 在.CS文件中引用Microsoft.Moles.Framework程序集:

    使用Microsoft.Moles.Framework;

  3. 构建项目。这会将适当的Moles框架引用添加到项目中。正如@Lara评论的那样,第3步将失败,而不添加引用。

  4. .CS文件中的参考moled程序集:

    使用MyNamespace.Moles;

  5. 使用[HostType(“Moles”]属性

    装饰使用Moled类型的测试方法

    [HOSTTYPE( “摩尔”)]

  6. 使用程序集属性识别整个程序集或.CS文件中使用的各个类型:

    使用MyNameSpace.MyAssemblyName.Moles;

    [assembly:MoledAssemblyType(“MyNameSpace.MyAssemblyName”)]

    [assembly:MoledType(typeof(MynameSpace.MyAssemblyName.MyClass))]

  7. 编译测试项目时,Moles会复制“moled”程序集,然后在副本中注入弯路。 moled程序集和类型的命名空间附加了“.Moles”。因此,“MyNameSpace.MyAssembly”变为“MyNameSpace.MyAssembly.Moles”。我相信你也熟悉moled程序集类型名称的“S”和“M”前缀。如果没有,请参阅Moles Reference Manual

答案 1 :(得分:0)

对我来说这很好用,我也用MDateTime试了一下。只需确保在您的使用中放置正确的命名空间或直接在您的代码中使用System.Moles.MDateTime。然后Intellisense会为您提供所有方法和属性,以便根据需要进行设置。

正如您已经说过在添加鼹鼠组件后重建项目,这不应该是问题了。

对于某些类(我现在不太确定,也许那些不属于mscorlib的那些?)我还必须添加

[assembly: MoledType( typeof( HttpContext ) )]

到我的单元测试类的顶部(在命名空间之上),还有

[HostType( "Moles" )]

作为我的测试方法的属性,但对于MDateTime来说这不是必需的。

您是否下载了最新版本并将VS2010更新为最新的SP?

希望其中一些有帮助...

-G。