首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

easymock课程-改变同一个方法调用的行为

2012-07-04 
easymock教程-改变同一个方法调用的行为??? 在easymock中,对于mock对象的同一个方法,可以为每一次的调用定

easymock教程-改变同一个方法调用的行为

??? 在easymock中,对于mock对象的同一个方法,可以为每一次的调用定制不同的行为。在record阶段easymock会精确的记录我们录入的行为,基于每一次的方法调用。

?

??? 这里有一个官网文档中的例子:

easymock课程-改变同一个方法调用的行为????expect(mock.voteForRemoval("Document"))
easymock课程-改变同一个方法调用的行为????????.andReturn((byte)?42).times(3)
easymock课程-改变同一个方法调用的行为????????.andThrow(new?RuntimeException()).times(4)
easymock课程-改变同一个方法调用的行为????????.andReturn((byte)?-42);

??? 对于mock.voteForRemoval("Document")方法的调用,.andReturn((byte) 42).times(3) 表明前3次调用将返回42,.andThrow(new RuntimeException()).times(4)表示随后的4次调用(第4,5,6,7次)都将抛出异常,andReturn((byte) -42)表示第8次调用时将返回-42。

?

??? 我们来验证一下:

easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为public?class?ChangeBehehaviorTest?extends?Assert?{
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????private?static?interface?Service?{
easymock课程-改变同一个方法调用的行为????????public?byte?voteForRemoval(String?name);
easymock课程-改变同一个方法调用的行为????}
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为????@Test
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????public?void?testExecute()?{
easymock课程-改变同一个方法调用的行为????????final?String?name?=?"Document";
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为????????Service?mock?=?EasyMock.createMock("service",?Service.class);
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为????????EasyMock.expect(mock.voteForRemoval("Document")).andReturn((byte)?42).times(3).andThrow(new?RuntimeException())
easymock课程-改变同一个方法调用的行为????????????????.times(4).andReturn((byte)?-42);
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为????????EasyMock.replay(mock);
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????????for?(int?i?=?0;?i?<?3;?i++)?{
easymock课程-改变同一个方法调用的行为????????????assertEquals(42,?mock.voteForRemoval(name));
easymock课程-改变同一个方法调用的行为????????}
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????????for?(int?i?=?0;?i?<?4;?i++)?{
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????????????try?{
easymock课程-改变同一个方法调用的行为????????????????mock.voteForRemoval(name);
easymock课程-改变同一个方法调用的行为????????????????fail("should?throw?RuntimeException");
easymock课程-改变同一个方法调用的行为easymock课程-改变同一个方法调用的行为????????????}?catch?(RuntimeException?e)?{
easymock课程-改变同一个方法调用的行为
easymock课程-改变同一个方法调用的行为????????????}
easymock课程-改变同一个方法调用的行为????????}
easymock课程-改变同一个方法调用的行为????????assertEquals(-42,?mock.voteForRemoval(name));
easymock课程-改变同一个方法调用的行为????????EasyMock.verify(mock);
easymock课程-改变同一个方法调用的行为????}
easymock课程-改变同一个方法调用的行为}

??? 测试案例顺利通过。

?

热点排行