2

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

  1. 从这里下载痣(x86 版本)。
  2. 安装它。
  3. 这里的人描述了如何将它与自定义库一起使用。所以我为我自己的图书馆添加了 moles 组件。重建后,程序集出现在参考资料中。
  4. 然后我尝试添加使用 .Moles 命名空间并构建项目,但失败并出现一堆错误。MDateTime 的示例也不起作用。MDateTime 只是没有任何方法。
  5. 考虑到这是让它工作的第 5 次失败尝试,我从系统中卸载了它。

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

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

谢谢。

4

2 回答 2

3

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

  1. 您必须为您希望使用 Moles 的每个组件创建一个“moled 组件”:

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

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

    使用 Microsoft.Moles.Framework;

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

  4. 参考 .CS 文件中的模压组件:

    使用 MyNamespace.Moles;

  5. 用 [HostType("Moles"] 属性装饰使用 Moled 类型的测试方法

    [HostType("痣")]

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

    使用 MyNameSpace.MyAssemblyName.Moles;

    [程序集:MoledAssemblyType("MyNameSpace.MyAssemblyName")]

    [程序集:MoledType(typeof(MyNameSpace.MyAssemblyName.MyClass))]

编译测试项目时,Moles 会复制“被摩尔”的程序集,然后在副本中注入弯路。Moled 程序集和类型的命名空间附加了“.Moles”。因此,“MyNameSpace.MyAssembly”变为“MyNameSpace.MyAssembly.Moles”。我敢肯定,您也熟悉模压组件类型名称的“S”和“M”前缀。如果没有,请参阅Moles 参考手册

于 2011-07-22T04:10:39.417 回答
0

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

正如您已经说过的,您在添加 moles 程序集后重建了项目,这应该不再是问题了。

对于某些课程(我现在不太确定,也许那些不是 mscorlib 的一部分?)我还必须添加

[assembly: MoledType( typeof( HttpContext ) )]

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

[HostType( "Moles" )]

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

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

希望有些帮助...

G。

于 2011-07-20T14:39:23.143 回答