1. 程式人生 > 實用技巧 >關於Mockito學習的一點自己的理解

關於Mockito學習的一點自己的理解

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;
        });
    }