Rhino Mocks (RhinoMock)2

发表于:2007-11-08 12:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

RhinoMocks2NMock2相比较NMock都学习了JMock强大的Constraints.

 

Constraint:

Example:

Object

Anything

Is.Anything()

Equal

Is.Equal(3)

Not Equal

Is.NotEqual(3) or !Is.Equal(3)

Null

Is.Null()

Not Null

Is.NotNull()

Type Of

Is.TypeOf(typeof(string))

Greater Than

Is.GreaterThan(10)

Greater Than Or Equal

Is.GreaterThanOrEqual(10)

Less Than

Is.LessThan(10)

Less Than Or Eqaul

Is.LessThanOrEqual(10)

Property

Equal To Value

Property.Value("Length",0)

Null

Property.IsNull("InnerException")

Not Null

Property.IsNotNull("InnerException")

List

Is In List
[the parameter is a collection that contains this value]

List.IsIn(4)

One Of
[parameter equal to one of the objects in this list]

List.OneOf(new int[]{3,4,5})

Equal

List.Equal(new int[]{4,5,6})

Text

Starts With

Text.StartsWith("Hello")

Ends With

Text.EndsWith("World")

Contains

Text.Contains("or")

Like
[perform regular expression validation]

Text.Like("Rhino|rhino|Rhinoceros|rhinoceros" )

Operator Overloading

And - operator &

Text.StartsWith("Hello") & Text.Contains("bar")

Or - operator |

Text.StartsWith("Hello") & Text.Contains("bar")

Not - operator !

!Text.StartsWith("Hello")


RhinoMocks2
的缺点:

对于所有的mock对象, 你必须预计(Expect)到它在执行时(excute)的所有将发生方法, 否则都会导致测试无法通过, 唯一例外的一点就是NMock对此没有要求.当你把NMockTest的第70行注释掉,测试依然通过.

不知道是不是因为这样的原因RhinoMocks2并没有提供Expect.Never.On这样的语法. 也就是我无法保证某个方法不被调用. 而其他的框架都实现了类似的功能. 

我的期望:

Expect.On(subMock).Call(subMock.MultiplyTwo(5)).Return(10);

其中On方法似乎显的多余.不知道能不能改成下面这个样子.

Expect.Call(subMock.MultiplyTwo(5)).Return(10);

甚至于变成这样

subMock.MultiplyTwo(5)==10;

当然Expectation的模型应该保留,因为对于某些需要指定异常约束的情况你是无法通过subMock.MultiplyTwo(5)==10;这样的形式来描述的.

虽然Expect的语法的语义比较强, 但是在书写的时候还是比较麻烦.不知道能不能有更好的模型.

Mock对象在测试时无法调试, 这点和NUnit那样基于状态的测试相比差了点, 只能靠自己动脑子了.

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号