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

java unit test Mock框架jMockit示例教程 - 完整的Mock步骤,mockjmockit,一个完整的Mock会有三

来源: javaer 分享于  点击 16442 次 点评:36

java unit test Mock框架jMockit示例教程 - 完整的Mock步骤,mockjmockit,一个完整的Mock会有三


一个完整的Mock会有三个步骤,步骤一、record (录制);步骤二、replay 在此阶段,录制的方法可能会被调用;步骤三、验证。如果是Expectations就没有必要做Verifications了。

package cn.outofmemory.jmockit.sample;  import jmockit.target.OfferPostAction;  import jmockit.target.WinportUrlServiceImpl;  import junit.framework.Assert;  import mockit.Mocked;  import mockit.NonStrictExpectations;  import mockit.Verifications;  import org.junit.Test;  /**  * 一个完整的Mock会有三个步骤,步骤一、record (录制);步骤二、replay 在此阶段,录制的方法可能会被调用;步骤三、验证。如果是Expectations就没有必要做Verifications了。  * @author Ginge  *  */  public class RecordReplayVerificationTest {      @Mocked      private WinportUrlServiceImpl winportUrlService = null;      private OfferPostAction offerPostAction = new OfferPostAction();      @Test      public void testofferPostActionExecute() {          final String memberId = "test2009";          // 步骤一、record (录制)          new NonStrictExpectations() {              {                  // 期望被mock的调用,以及被调用时返回的结果                  winportUrlService.hasWinport(memberId);                  result = false; // 也可以是returns(false);                  // 总共可以调用的次数                  times = 1;              }          };          // 步骤二、replay 在此阶段,录制的方法可能会被调用          Assert.assertEquals(false, offerPostAction.hasWinport(memberId));          try{              offerPostAction.getWinportUrlThrowException(memberId);          }catch(Exception e){              //fully mock,默认完全被mock,到这里就注定失败              Assert.fail();          }          // 步骤三、验证步骤二中,mock方法是否被调用,本步骤可以省略          new Verifications() {              {                  winportUrlService.hasWinport(withAny(""));                  times = 1;              }          };      }  }  
相关栏目:

用户点评