Spring OAuth2 0 單元測試解決方案

2022-10-06 02:45:10 字數 1334 閱讀 1912

為什麼需要單元測試

單元測試擁*****質量、盡早發現軟體 bug、簡化除錯過程、促進變化並簡化整合、使流程更靈活等優勢。單元測試是針對**單元的獨立測試,核心是程式設計客棧「獨立」,優勢**也是這種獨立性,而所面臨的不足也正是因為其獨立性:既然是「獨立」,就難以測試與其他**和依賴環境的相互關係。單元測試與系統測試是互補而非代替關係。單元測試的優勢,正是系統測試的不足,單元測試的不足,又恰是系統測試的優勢。不能將單元測試當做解決所有問題的萬金油,而需理解其優勢與不足,揚長避短,與系統測試相輔相成,實現測試的最大效益。

oauth2 系統單元測試困難

解決方案

參考 程式設計客棧@withmockuser ,在 mock ***中自動執行相關的增強(token 獲取),並通過擴充套件 withsecuritycontextfactory 實現上下文 token 的傳遞。具體可以參考原始碼 pig-common-test[1]

引入依賴

com.pig4cloud

pig-common-test

$ test<>

單元測試 controller 介面

指定認證中心介面

配置在 test/resources/application.yml

模擬測試 controller 介面

@runwith(springrunner.class)

@springboottest

public class syslogcontrollertest

@test

@sneakythrows

@withmockoauth2user

public void testmvctoken()

}模擬測試 feignclient 傳遞 token

直接注入 feignclient 實現即可 使用 @withmockoauth2user 註解測試類即可

withmockoauth2user 屬性說明

當前用例獲取 token 使用的使用者名稱

string username() default "admin";

當前用例獲取 token 使用的密碼

string password() default "123456";

寫在最後

原始碼參考 pig-common-test[1] 模組

目前僅在 pig 2.10 做了實現,理論支援低版本,直接 install 此模組即可

參考資料

[1] pig-common-test:

20 go單元測試

go本身提供了一套輕量級的測試框架。符合規則的測試 會在執行測試時被自動識別並執行。單元測試原始檔的命名規則如下 必須是以 test.go結尾的檔案,比如manager test.go go的單元測試函式分為兩類 功能測試函式和效能測試函式,分別以test和benchmark為函式名字首並以 tes...

SpringBoot開啟單元測試的正確方法

快捷鍵 command shift t 將游標放在需要測試的類名上 測試類上新增註解 runwith springrunner.class springboottest classes 啟動類.class 測試方法新增註解 test 注意 import的包是 import org.junit.tes...

與protected成員有關的單元測試方式

這是一篇簡單的文章,討論了單元測試中遇到protected成員的應對方案。此外,在文章最後也希望和大家討論一下某個特殊的情況下的處理方法。protected是乙個有趣而有用的修飾符,它把方法的訪問成員嚴格限制在自身或自己的子類身上。換句話說,在使用過程中,protected成員對外部是開放的 因為其...