首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moles和重构代码

Moles和重构代码
EN

Stack Overflow用户
提问于 2011-09-16 01:06:17
回答 2查看 909关注 0票数 2

我们开始在我的公司一个新的绿地项目,它已经决定,我们将使用微软的Moles框架,我们所有的模拟在单元测试。理想情况下,我的经理不希望引入任何其他的模拟框架,比如NSubstitute或Moq来使项目复杂化。然而,我发现,由于Moles生成Mocks和Stub的特性,它与重构工具不很好地工作。

例如,我们使用resharper,如果我有以下接口,moles将生成如下所示的存根:

IMyInterface -> SIMyInterface

现在,如果我要将IMyInterface重构为另一个名称,如: IMyNewInterface

然后,在我的单元测试中,Stub类显然没有被重构,因为它有一个根本不同的名称。

我可以看到,这是一个大问题,一旦我们得到许多单元测试排列,重构将成为一个噩梦,而口号将是“不要改变任何东西!”

有没有人有类似的经验或知道一个重构工具,可以处理Moles?

谢谢梅林和迈克。我的团队已经决定妥协,只对那些我们不能用标准工具模拟的类型使用Moles,然后再为其他一切使用另一个框架,比如NSubstitute。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-20 18:13:47

更新2012年8月16日-请使用假的,而不是摩尔。Visual 2012附带了赝品,是Moles.的完全支持的产品发行版。

鼹鼠没有第三方供应商的支持,因为它不是官方发布和支持的技术,而且还在改变。我已经创建了一些生成Moles和Pex属性及测试方法的CodeRush模板;但是,这无助于重构类型名称。

我同意,您在代码和测试程序集中重构名称的想法是一个好主意。具有讽刺意味的是,鼹鼠类型无法重构,因为它们来自已编译的程序集。您能做的最好是重构代码,然后在测试项目中执行搜索和替换(讨厌)。是的,这很难看,尤其是在重构了几件事情之后。

鼹鼠建议:

我建议RiSE调整鼹鼠(再一次)来生成一个未编译的moles项目,而不是生成一个已编译的程序集。我知道组装要容易得多,但我预见到这将使开发人员能够重构鼹鼠类中的鼹鼠和存根类型名称。此外,重构工具,如重构!Pro应该能够在代码、鼹鼠和测试项目之间自动重构代码和鼹鼠类型名称。

票数 1
EN

Stack Overflow用户

发布于 2011-09-28 22:24:02

根据Microsoft Moles参考手册的说法,在第11页的“代码生成配置”下:

还可以禁用编译,在这种情况下,Moles代码生成器将在项目中插入生成的C#源。

禁用所述编译的方法似乎是将Compilation元素添加为(根) Moles元素的子元素(如果不存在),并向所述子元素添加ProjectTemplate属性,将其值设置为.csproj文件的路径。这是基于我在Visual中读取XML显示的上述属性的IntelliSense描述(摘自Moles中的文档,在我的计算机上位于C:\Program Files\Microsoft Visual Studio 10.0\Xml\Schemas\moles.xsd上),其内容如下:

用于创建用于编译的Moles程序集项目的空C#项目文件的路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7439137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档