探索單元測試系列 4 Mock物件的各種寫法

2021-10-01 11:12:03 字數 3669 閱讀 7108

package com.example.demo.mock.controller;

import com.example.demo.junit.spring.service.junitdemoservice;

import com.example.demo.mock.service.mockdemoservice;

import com.example.demo.mock.service.mockdemoserviceimpl;

import org.junit.assert;

import org.junit.before;

import org.junit.test;

import org.junit.runner.runwith;

import org.mockito.*;

import org.springframework.boot.test.mock.mockito.mockbean;

/** * junit演示服務

* * @classname junitdemoservice

* @author zhaoguang

* @date 2019/12/14

* @version 1.0

*/public class mockdemoservicetest

@test

public void testadd()

}

注意,這種寫法是可以對介面進行mock的。

package com.example.demo.mock.controller;

import com.example.demo.junit.spring.service.junitdemoservice;

import com.example.demo.mock.service.mockdemoservice;

import com.example.demo.mock.service.mockdemoserviceimpl;

import org.junit.assert;

import org.junit.before;

import org.junit.test;

import org.junit.runner.runwith;

import org.mockito.*;

import org.mockito.junit.mockitojunitrunner;

import org.springframework.boot.test.mock.mockito.mockbean;

/** * junit演示服務

* * @classname junitdemoservice

* @author zhaoguang

* @date 2019/12/14

* @version 1.0

*/@runwith(mockitojunitrunner.class)

public class mockdemoservicetest

}

注意,@mock註解是mockito(不是junit)提供的,所以需要通過@runwith註解來指定執行環境是mockito。

或者,也可以這樣寫:

package com.example.demo.mock.controller;

import com.example.demo.junit.spring.service.junitdemoservice;

import com.example.demo.mock.service.mockdemoservice;

import com.example.demo.mock.service.mockdemoserviceimpl;

import org.junit.assert;

import org.junit.before;

import org.junit.test;

import org.junit.runner.runwith;

import org.mockito.*;

import org.springframework.boot.test.mock.mockito.mockbean;

import org.springframework.test.context.junit4.springrunner;

/** * junit演示服務

* * @classname junitdemoservice

* @author zhaoguang

* @date 2019/12/14

* @version 1.0

*/public class mockdemoservicetest

@test

public void testadd()

}

package com.example.demo.mock.controller;

import com.example.demo.junit.spring.service.junitdemoservice;

import com.example.demo.mock.service.mockdemoservice;

import com.example.demo.mock.service.mockdemoserviceimpl;

import org.junit.assert;

import org.junit.before;

import org.junit.test;

import org.junit.runner.runwith;

import org.mockito.*;

import org.mockito.junit.mockitojunitrunner;

import org.springframework.boot.test.mock.mockito.mockbean;

import org.springframework.test.context.junit4.springrunner;

/** * junit演示服務

* * @classname junitdemoservice

* @author zhaoguang

* @date 2019/12/14

* @version 1.0

*/@runwith(springrunner.class)

public class mockdemoservicetest

}

注意,@mockbean註解是springboot(不是mockito)提供的,所以需要通過@runwith註解指定執行環境為spring。

在實際的**中,往往不可能只測試沒有任何依賴的類,大多數場景中都至少是a依賴b的關係.我們要測試a時,就需要對b進行mock。像這樣寫就可以了:

@injectmocks

private b b;

@mock

private a a;

@runwith註解是junit提供的用於指定單元測試執行環境的。引數value的值必須是繼承了org.junit.runner.runner類的乙個實現類。runner的家族圖譜如下:

單元測試之模擬Mock

先看下面一段 public class dataservice idataservice public int getcount 其中有 getcount 方法是為獲取列表的 count,我們為這個方法寫單元測試 getcount 中獲取列表是呼叫了 idatarespository 中的 getl...

golang單元測試之mock

搞單元測試,如果碰到這些情況 1,乙個函式,內部包含了很多並且很深的呼叫,但是如果單單測這個函式,其實實現的功能很簡單。2,乙個函式,包含了其他還未實現的呼叫。3,函式內部對資料的要求極為苛刻。那麼這時候就可以考慮使用mock來處理。mock,簡而言之就是可以通過注入我們所期望返回的資料,或者我們所...

Object C單元測試 MOCK(摘錄精選)

斷言測試型別 下面一共18個斷言 sdk中也是18個,其含義 ios unittest 學習筆記,真心佩服原文的博主 xctfail format 生成乙個失敗的測試 xctassertnil a1,format.為空判斷,a1為空時通過,反之不通過 xctassertnotnil a1,forma...