2011-07-09 62 views
2

我试图找到一个关于如何使用痣隔离框架的一致描述,但没有发现太多的话题。 到目前为止,我做了以下内容:从here(x86版)有没有人让痣正常工作?

  1. 下载痣。
  2. 安装它。
  3. Here家伙描述如何使用它与自定义库。所以我为我自己的图书馆添加了痣组装。重建后,组件出现在参考文献中。
  4. 然后我试着添加使用.Moles命名空间和生成项目,但它失败了一堆的错误。 MDateTime的例子也没有工作。 MDateTime只是没有任何方法。
  5. 考虑到这是第五次失败的尝试让它工作我从系统中卸载它。

所以问题:痣是否对任何人都有效?如果是,你是如何到达那里的? 我是否应该安装pex使其工作? 如果我想从msbuild脚本在构建服务器上使用它,该怎么办?我看到他们提到了msbuild的支持,但是有没有人从msbuild中使用它的真实经验?

对我来说,在严肃的开发过程中使用它看起来很原始。 也许有人有其他意见?

谢谢。

+0

对我来说工作得很好,我们使用它与VS.NET测试框架 – Peter

回答

3

是的,它工作正常。我假设你正在安装v0.94.51023.0。对于Moles正常运行,您必须做一些事情来设置测试课程。这些很快成为第二天性 - 不用担心!

  1. 您必须创建一个“moled集结号”,对于每一个对您希望使用痣装配:

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

  2. 参考的Microsoft.Moles.Framework组件在.CS文件:使用Microsoft.Moles.Framework

    ;

  3. 构建项目。这会导致适当的Moles框架引用被添加到项目中。正如@拉拉评论说,第3步将失败,不添加引用。在.CS文件

  4. 参考moled组件:

    使用MyNamespace.Moles;

  5. 使用Moled类型与[HOSTTYPE( “摩尔”]装饰试验方法属性

    [HOSTTYPE( “摩尔”)]

  6. 确定选择对整个组件或所使用的各个类型在.CS文件中,通过使用组件属性:

    使用MyNameSpace.MyAssemblyName.Moles;

    [组件:MoledAssemblyType( “MyNameSpace.MyAssemblyName”)]

    [组件:MoledType(typeof运算(MyNameSpace.MyAssemblyName.MyClass))]

当测试项目被编译,痣复制 “moled” 组件,然后注入到弯路的副本。 Moled组件和类型的命名空间会附加“.Moles”。因此,“MyNameSpace.MyAssembly”变成“MyNameSpace.MyAssembly.Moles”。我相信你也熟悉“Mo”组件类型名称的“S”和“M”前缀。如果没有,请参阅Moles Reference Manual

+0

我做的和你描述的一样。但在第3步中,它表示名称空间MyNamespace.Moles不存在。我做错什么了吗? – 2011-08-19 04:36:47

+0

@拉拉:你可能会枯萎建立项目,或手动添加所需的参考。我将更新步骤,以包含构建。 –

0

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

正如你已经说过你在添加痣组件后重建你的项目,这不应该成为问题了。

对于一些类(我不太清楚,现在,也许那些不mscorlib中的一部分吗?)我也只好到

[assembly: MoledType(typeof(HttpContext))] 

添加到我的单元测试类的顶部(以上命名空间),也是

[HostType("Moles")] 

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

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

希望一些这有助于...

G.