欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

EasyMock使用总结,easymock总结,EasyMock使用总结

来源: javaer 分享于  点击 44670 次 点评:273

EasyMock使用总结,easymock总结,EasyMock使用总结


EasyMock使用总结

1.生成Mock对象

如何创建一个需要严格遵守调用顺序的mock对象?

SomeInterface mockObj = createStrictMock(SomeInterface.class);  

如果你不想对每一个方法设定预期行为,对于这些非预期的方法调用你不想让EasyMock抛出AssertionError,你可以创建一个“nice”的mock对象,所有没有设定预期行为的方法会悄悄地返回一些空值(0,null或者false)。

SomeInterface mockObj = createNiceMock(SomeInterface.class); 

当然,如果你使用MockControl来创建Mock对象,都有相应的方法:createStrictControl和createNiceControl。(其实当你调用createMock等方法时,都生成了一个相应的control。)

2.开关调用顺序检查

如果在测试某处你想关闭strict模式,使用:

checkOrder(mockObj,false);

当然,如果想重新开启,可以使用

checkOrder(mockObj,true);

3.设定预期行为和输出

期望一个方法始终返回期望的值,而不管调用次数:

expect(mockObj.someAction(1)).andStubReturn("one");

下面的方法与此等价:

expect(mockObj.someAction(1)).andReturn("one").anyTimes();

设定确定的调用次数:

expect(mockObj.someAction(1)).andReturn("one").times(3);

设定调用次数在某个范围内:

expect(mockObj.someAction(1)).andReturn("one").times(3,5);

期望抛出异常:

expect(mockObj.someAction(1)).andThrow(someException);  

4.参数匹配

任意参数:

expect(mockObj.someAction(anyInt())).andStubReturn("one");  

当然,相应的有anyObject(),anyChar()等等。

在参数上应用逻辑操作:

expect(mockStatement.executeQuery(and(startsWith("select"), endsWith("order;")))).andReturn(mockResultSet); 

EasyMock提供大量其它的逻辑操作。

自定义参数匹配器:

expect(mockStatement.executeQuery(SQLEquals("SELECT * FROM ORDER;"))).andReturn(mockResultSet);  
private static String SQLEquals(String in) {      reportMatcher(new SQLEquals(in));      return in;  }  private static class SQLEquals implements IArgumentMatcher {      private String expectedSql;      public SQLEquals(String expectedSql) {          this.expectedSql = expectedSql;      }      public boolean matches(Object actualSql) {          if (actualSql == null && expectedSql == null)              return true;          if (actualSql.getClass() == String.class)              return expectedSql.equalsIgnoreCase((String) actualSql);          return false;      }       // others omited.  } 
相关栏目:

用户点评