Spring boot單元測試 service層

2021-07-11 18:02:36 字數 1419 閱讀 5206

參考:

service層

a.    service/src目錄下新建test目錄,右鍵test目錄選擇"mark directory as",選擇"test source root"

b.    右鍵test建立具體的測試類或者包(包下建立類)tt.

c.    返回要測試的service實現類中檢視被引入(@autowired)的類

d.    這些類需要在tt中使用mock建立。    eg: private draftrepository draftrepository=mock(draftrepository.class)

f.    返回到要測試的service實現類中新增兩個建構函式。乙個無參,乙個把被@autowired引入的類新增為建構函式的引數。

g.    回到tt中,新增要測試的service物件為私有資料。    eg: private draftserviceimpl service=new draftserviceimpl(draftrepository)

h.    在tt中增加函式mockentity(),返回entity型別的資料(draft),並且在函式中呼叫entity的set函式設定一些屬性。

i.    使用@test標註測試函式testfind()。在函式中呼叫mockentity返回entitya。

j.    import static org.mockito.mockito.when;

k.    在tt中繼續新增  when( draftrepositort.findbyid(id) ).thenreturn(entitya);

l.    在tt中呼叫service的按照id查詢函式,存起返回物件。    eg: entityvo  vo=service.getentitybyid(id);

m.    在tt中新增assertthat( vo.getid(),is(12) );        //此處12是步驟f中對應設定的值

n.    右鍵測試類"run"

注:步驟k和步驟l的關係:步驟l中執行的函式service.geyentitybyid(id)的函式體包含了步驟k中repository的函式findbyid(id)。

因此,執行完步驟l之後會返回mock到的entitya。如果service的函式findentity是可用的,則會返回mock到的entitya。可以

通過斷言assert判定屬性值是否是在步驟h中設定的值來判斷findentity是否可用。

2.controller層

a.    同上建立test目錄,並建立測試類tt

b.    在類名tt前加上註解@runwith(springjunit4classrunner.class)        //springjunit支援,由此引入spring-test框架支援!

c.    可以直接利用註解@autowired引入自己想要的類測試

注:

Spring Boot 單元測試

由於spring boot在啟動時通常會先行啟動一些內建的元件,比如tomcat。因此,spring boot的測試類一般需要加一些簡單的註解。org.springframework.boot spring boot starter test test runwith標記乙個執行期springrun...

springboot單元測試

springboot對單元測試的支援十分完善,需要引入的jar包 org.springframework.boot spring boot starter test test 使用方式 在測試類的類頭部需要新增 runwith springrunner.class 和 springboottest註...

Spring Boot 單元測試

在所有測試方法前執行一次,一般在其中寫上整體初始化的 beforeclass 在所有測試方法後執行一次,一般在其中寫上銷毀和釋放資源的 afterclass 在每個測試方法前執行,一般用來初始化方法 比如我們在測試別的方法時,類中與其他測試方法共享的值已經被改變,為了保證測試結果的有效性,我們會在 ...