相关疑难解决方法(0)

犀牛模拟vs Typemock vs JustMock vs

我需要为新项目选择模拟框架.

这些框架的优缺点是什么?任何比较表?

我知道JustMock是我的beta阶段,但它现在看起来非常好(非常类似于TypeMock)

编辑:我怎么样MS鼹鼠?

rhino-mocks moq typemock justmock

26
推荐指数
4
解决办法
1万
查看次数

没有IoC或依赖注入的模拟

有没有办法在单元测试中使用模拟或假货而无需使用依赖注入或反转或控制?

我发现这种语法可以与TypeMock Isolator(http://learn.typemock.com/)一起使用.虽然它是一个商业产品,所以我希望其他框架(例如RhinoMocks)会在某个阶段引入这样的语法.

/// Can mock objects WITHOUT DEPENDENCY INJECTION.

var hand = Isolate.Fake.Instance<Hand>();
var mouth = Isolate.Fake.Instance<Mouth>();
Isolate.Swap.NextInstance<Hand>().With(hand);
Isolate.Swap.NextInstance<Mouth>().With(mouth);
...
//notice we're not passing the mocked objects in.
var brain = new Brain();
brain.TouchIron(iron);
...
Run Code Online (Sandbox Code Playgroud)

这对我这种语法非常有吸引力,这一切都是自动发生的.我们可以在那里创建一个没有传递必需依赖项的大脑,并且模拟框架将自动替换依赖项用于模拟对象.任何身体在其他地方看到过这种类型的东西?

大脑类构造函数现在使用上面的语法,

public Brain()
{
    _hand = new Hand();
    _mouth = new Mouth();
}
Run Code Online (Sandbox Code Playgroud)

依赖注入示例看起来像这样,

public Brain(IHand hand, IMouth mouth)
{
    _hand = hand;
    _mouth = mouth;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# unit-testing dependency-injection inversion-of-control

12
推荐指数
1
解决办法
4809
查看次数

开放/封闭原则是个好主意吗?

这个问题不是关于OCP是什么.我也不是在寻找简单的答案.

所以,这就是我问这个的原因.OCP最初是在80年代后期描述的.它反映了当时的思想和背景.令人担忧的是,在代码已经过测试并投入生产之后,更改源代码以添加或修改功能将最终变得风险太大且成本高昂.因此,我们的想法是尽可能避免更改现有的源文件,并且只以子类(扩展)的形式添加到代码库中.

我可能错了,但我的印象是基于网络的版本控制系统(VCS)当时并未广泛使用.关键是VCS对于管理源代码更改至关重要.

重构的想法是最近的.那些支持自动重构操作的复杂IDE当然不存在.即使在今天,许多开发人员也没有使用最好的重构工具.这里的要点是,这样的现代工具允许开发人员在几秒钟内安全地改变数千行代码.

最后,今天,自动化开发人员测试(单元/集成测试)的想法很普遍.有许多免费和复杂的工具支持它.但是,如果我们从不/很少更改现有代码,那么创建和维护大型自动化测试套件有什么用?正如OCP所要求的那样,新代码只需要新的测试.

那么,OCP今天真的有意义吗?我不这么认为.相反,如果新功能不需要新类,我确实更愿意在添加新功能时更改现有代码.这样做可以使代码库更简单,更小,更易于阅读和理解.破坏以前功能的风险将通过VCS,重构工具和自动化测试套件进行管理.

open-closed-principle

11
推荐指数
2
解决办法
2526
查看次数

模拟框架的新手

我正在尝试将测试驱动开发作为单个开发人员(可能将团队增加到四个).我有经验使用NUnit进行有限的单元测试.

我已经开发了这个系统几年(VB.NET).我之前的开发人员在系统上工作了三年,他赞成Martin Fowlers事务脚本方法,这意味着有大型的单一功能,几乎没有考虑设计/可重用性等.

我已经研究了一些可用于Nunit的Mocking框架,我相信我唯一的选择是商业产品TypeMock(RhinoMock vs. TypeMock vs. NUnit的Mocking?)因为它允许你模拟那些没有抽象且没有接口的类.它是否正确?

我在这里读了一些帖子,表明事实并非如此.因此这个问题的原因.我可以为事务脚本/单片系统使用任何免费的模拟框架吗?

.net nunit unit-testing mocking

7
推荐指数
1
解决办法
2854
查看次数