我几周前开始使用TDD.我必须对一个充满非虚方法的C#代码进行单元测试,并且没有太多的接口.因此,在我研究RhinoMock和Moq之后,代理解决方案还不够:感谢分析器,我需要的是隔离.
从我读到的,我有3个选择:
我需要轻松配置的模拟.Moles不提供高级声明性验证功能,而且我自己也很难.
TypeMock是一个很好的解决方案,但对于我真正需要的东西肯定有点多,我发现价格太高了.
JustMock应该同意,但我没有找到很多引用.这是一个耻辱,它的语法接近于Moq,它应该是一个很好的过渡(我可以切换到带有更清晰代码的免费版本,这要归功于例如依赖注入).但TypeMock是在2006年推出的,而Justmock在2010年仍处于测试阶段,但存在明显的差距(尽管Telerik有很好的分数).Q2修复漏洞于2010年7月发布.
问题: JustMock的最新版本是否足够有效?他们是一些满意的用户?
(不错的免费引用仅适用于接口/委托/非虚方法:)
看到http://www.ayende.com/projects/rhino-mocks.aspx
看到http://code.google.com/p/moq/
看http://www.nmock.org/
我有一个这样的课:
public class Product : IProduct
{
static private string _defaultName = "default";
private string _name;
private float _price;
/// Constructor
public Product()
{
_price = 10.0F;
}
public void ModifyPrice(float modifier)
{
_price = _price * modifier;
}
Run Code Online (Sandbox Code Playgroud)
我希望ModifyPrice不为特定值做任何事情,但我也想调用将价格设置为10的构造函数.我尝试过这样的事情:
var fake = new SProduct() { CallBase = true };
var mole = new MProduct(fake)
{
ModifyPriceSingle = (actual) =>
{
if (actual != 20.0f)
{
MolesContext.ExecuteWithoutMoles(() => fake.ModifyPrice(actual));
}
}
};
MProduct.Constructor = (@this) => (@this) = …Run Code Online (Sandbox Code Playgroud)