使用spring aop 簡化mock設計實現

2021-08-24 19:55:00 字數 1335 閱讀 5363

有時候為了去掉對外部系統的依賴, 我們需要針對外部依賴的介面建立乙個mock實現類, 當然裡面都是空實現, 如果有多個的話, 可能需要寫很多的mock實現類, 我們在測試的時候, 發現可以通過spring aop來進行簡化, 使用乙個aspect來替代多個mock實現. 具體做法如下:

首先是aop的配置檔案, 如下:

<?xml version="1.0" encoding="gbk"?>

這裡主要配置了乙個用來放實際執行的方面類:mockaspect, 然後是一些pointcut的表示式配置.也就是告訴spring aop, 當碰到某個類, 某個方法的時候, 去執行mockaspect中對應的某個方法.

mockaspect的內容如下:

public class mockaspect implements beanfactoryaware 

public void setbeanfactory(beanfactory beanfactory) throws bean***ception

/***

* 乙個預設的處理, 什麼也不做

** @param join

* @return

* @throws throwable

*/public object invokeandreturnnull(proceedingjoinpoint join) throws throwable

public string invokeandreturnstring(proceedingjoinpoint join) throws

throwable

/*** 對方法進行切面

* @param join

* @param text

* @param categoryid

* @return

* @throws throwable

*/public string checkfixkeywords(proceedingjoinpoint join, string text,

long categoryid)

throws throwable

return null;

}}

這裡還需要提到的乙個東東, 就是實現了beanfactoryaware 介面, 主要是為了在一起執行所有的test case的時候, 有時候裡面有幾個bean需要替換為mock的實現類(比如這裡的categorymanagermock), 這裡我們做了乙個switch的動作, 讓他不是去呼叫具體的類, 而是我們定義的乙個mock實現類.

當然這種做法也不要濫用, 適可而止, 針對一些簡單的, 大量的mock, 還是有一定參考意義的.

MO歡迎使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

Spring Aop基礎使用

說到spring,想必大家一定就馬上想到了,哦spring不就是幫助管理bean物件,封裝資料源,提供事務管理的東西麼。的確,平常在使用spring的時候,用到最多的就是spring提供的這些功能了,其實spring還有乙個挺好的東西,或許大家平常用得少一些,他就叫aop。什麼aop,這是什麼玩意兒...

springAOP使用詳情

aop分為兩種方式 xml配置和註解 aspect,pointcut和 advice pointcut expression 切面表示式 指示器 designators execution 和其他 萬用字元 wildcards 和邏輯運算子 和!萬用字元 表示匹配任意數量的字元,匹配指定類及其之類 ...