EasyMock: missing behavior definition for the preceeding method call

EasyMock, 简单来说是一个用于运行时模拟接口对象的包. 其他的, 就不多介绍了. 
最近在一个项目的集成测试中需要用到, 所以学习了一下. 

根据EasyMock的documentation.html, 自己写了一个接口I, 一个引用接口对象的类C, 一个测试类T. 
  1. public interface MyInterface {
  2.   String iMethod(String s);
  3. }
  4. public class MyClass {
  5.   public MyClass() {}
  6.   private MyInterface myInterface; 
  7.   public void setMyInterface(MyInterface i) { myInterface = i; }
  8.   public String cMethod(String s) { myInterface.iMethod(s); }
  9. }
  10. public class MyClassTest {
  11.   MyInterface mock;
  12.   MyClass myClass;
  13.   @Test
  14.   public void testMyClass() {
  15.     mock = createMock(MyInterface.class);
  16.     myClass = new MyClass();
  17.     myClass.setMyInterface(mock);
  18.     
  19.     // expected mock call
  20.     mock.iMethod("Hello EasyMock");
  21.     
  22.     // real call
  23.     myClass.cMethod("Hello EasyMock");
  24.     
  25.     // verify mock
  26.     verify(mock);
  27.   }
  28. }

接口中定义的函数有返回值, String. 
原本因为一切OK了, 但是一运行就出错了:
  1. java.lang.IllegalStateException: missing behavior definition for the preceeding method call 
想了一下问题可能出在return上面, 但还是先上google上搜索了一下, 找到了 http://www.squix.ch/2007-07-05/easymock-missing-behavior-definition-for-the-preceeding-method-call/.
和我遇到的问题一样, 果然是return的问题. 稍微修改一下:

  1. mock.iMethod("Hello EasyMock");
  2. =>
  3. expect(mock.iMethod("Hello EasyMock")).andReturn("XXX");
在运行就正确了. 不过这只是第一步, 还要考虑在项目中如何用, 可能要为某些类抽象接口.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值