【发布时间】:2015-03-11 07:44:13
【问题描述】:
最近在浏览一个项目的自动化测试用例时,我遇到了一段类似这样的代码。
[TestMethod]
public void UpdateTtWebScResearchIdt()
{
using (ShimsContext.Create())
{
// Some code
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
//Assert
}
}
当我调试这个测试方法时,编译器显示如下错误
MolesInvalidOperationException.
在 Moles 方法被存根的那一行,即
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
详细信息显示了这一点。
“Moles 要求测试在仪表化过程中进行。 在 Visual Studio 单元测试中,将以下属性添加到您的单元测试方法中:
添加此属性
[TestMethod]
[HostType(Moles)]
public void Test()
{
...
}
扩展也可用于大多数单元测试框架。请参考 Moles 手册。
但是添加上述属性也不能解决我的问题。
我认为在垫片方法中使用痣是有问题的。 我需要对此提出另一种意见(或许多意见)。 如果有人能提出一个很棒的解决方案。
谢谢。
【问题讨论】:
标签: c#-4.0 visual-studio-2012 automated-tests moles