1. 如果要使用@Mockito ,则要加入MockitoAnnotations.initMocks
MockitoAnnotations.initMocks
放在 junit 的 @Before
注解修饰的函数中更合适。
MockitoAnnotations.initMocks 的一个替代方案是使用 MockitoJUnitRunner 。
2.一些注意点:
1.Dao层测试,直接用一些模拟数据,插入数据库,看看测试是否成功
2.Service主要来测试缓存的
3. web直接用Mock进行来测试
3. 使用方式:
方式一:
@Test public void queryx() { String pin = "testPin"; String ip = "127.0.0.1"; when(XXXJsf.getPreSwitch(any(XXXXReq.class))).thenAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { GenericResult<XXXX> genericResult = new GenericResult<>(); XXXX xjkCashierTradeRes = new xxx(); //符合切量 XXXXXRes.setxxxx(true); //成功 genericResult.setSuccess(true); genericResult.setCode("0000"); genericResult.setValue(XXXX); return genericResult; } });
下面一定要写调用的具体接口
ResponseVo<XXXXX> responseVo = XXXXX.XXXX(pin, "127.0.0.1");
log.info("XXXXX.res:{}", GsonUtils.toJson(responseVo));
方式二:
调用的时候会直接抛出异常信息,如果想让起抛出异常信息,则直接使用这个方式
@Test public void testMktSaleOrder() throws Exception { String message = "XXXXX"; try {
//注意下面两行代码的位置不能交换,必须先去定义调用就去抛出异常信息 doThrow(RuntimeException.class).when(XXXXJSF).asynxxxxeStock(any(XXXXckReq.class)); XXXXX.onMessage(message); } catch (Exception e) { } }
方式三:
@Before public void setup() { doReturn(1).when(XXXXXDao).insert(any(XXXXXXPo.class)); doReturn(1).when(xxxDao).updateByxxxxId(any(XXXXXXPo.class)); when(scoreXXXXDao.queryByIdxxxx(anyString())).then(invocationOnMock -> this.XXXXPo()); when(scorXXXXDao.queryByConditionXXXX(any(XXXXXPo.class))).then(invocationOnMock -> { Page page = new Page(); page.add(this.xxxxxPo()); return page; }); }