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

java unit test Mock框架jMockit示例教程 - Mock 构造方法,基于状态的Mock,mockjmockit,package cn.o

来源: javaer 分享于  点击 25745 次 点评:173

java unit test Mock框架jMockit示例教程 - Mock 构造方法,基于状态的Mock,mockjmockit,package cn.o


package cn.outofmemory.jmockit.target;  public class Constructor {      private String memberId;      public Constructor(String memberId) {          this.memberId = memberId;      }      public String getRealName() {          return "real_" + this.memberId;      }  }  

Mock代码

package cn.outofmemory.jmockit.sample;  import jmockit.target.Constructor;  import junit.framework.Assert;  import mockit.Expectations;  import mockit.Mock;  import mockit.MockUp;  import mockit.Mocked;  import org.junit.Test;  /**  * 好了,到此为止,之前所有的mock都是基于行为的mock,以下对构造方法的mock的示例是基于状态的。  * 我认为基于行为的mock是站在目标测试代码外面的角度的,而基于状态的是站在目标测试代码内部的。我们可以对传入的参数进行检查、匹配,才返回某些结果。  *   * @author Ginge  *   */  public class ConstructorTest1 {      @Mocked      private Constructor constructor = null;      @Test      public void mockConstructor() {          new Expectations() {              {                  // MockUp可以对应一个类或者接口,如果它的子类中有方法被注解了@Mock,                  // 并且恰好方法的签名又和传入的泛型的类型中某个方法一样,那么对应的方法就被Mock                  new MockUp<Constructor>() {                      private String memberId;                      // $init表示构造方法                      @Mock                      public void $init(String memberId) {                          this.memberId = "mock_" + memberId;                      }                      @Mock                      public String getRealName() {                          return this.memberId;                      }                  };              }          };          //触发构造方法的mock          constructor = new Constructor("Constructor");          Assert.assertEquals("mock_Constructor", constructor.getRealName());      }  }  
相关栏目:

用户点评