欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring OAuth2.0 單元測試解決方案

 更新時間:2020年10月12日 11:52:57   作者:冷冷zz  
這篇文章主要介紹了Spring OAuth2.0 單元測試解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

為什么需要單元測試

單元測試擁有保證代碼質(zhì)量、盡早發(fā)現(xiàn)軟件 Bug、簡化調(diào)試過程、促進變化并簡化集成、使流程更靈活等優(yōu)勢。單元測試是針對代碼單元的獨立測試,核心是“獨立”,優(yōu)勢來源也是這種獨立性,而所面臨的不足也正是因為其獨立性:既然是“獨立”,就難以測試與其他代碼和依賴環(huán)境的相互關(guān)系。單元測試與系統(tǒng)測試是互補而非代替關(guān)系。單元測試的優(yōu)勢,正是系統(tǒng)測試的不足,單元測試的不足,又恰是系統(tǒng)測試的優(yōu)勢。不能將單元測試當(dāng)做解決所有問題的萬金油,而需理解其優(yōu)勢與不足,揚長避短,與系統(tǒng)測試相輔相成,實現(xiàn)測試的最大效益。

OAuth2 系統(tǒng)單元測試?yán)щy

  • 接口測試依賴于 UPMS (用戶權(quán)限管理),無法做到解耦獨立
  • spring-security-test 模塊未提供相關(guān)標(biāo)準(zhǔn)實現(xiàn)
  • 場景復(fù)雜既要包含無狀態(tài) token 調(diào)用,又要保證上線文傳遞業(yè)務(wù)

解決方案

參考 @WithMockUser ,在 Mock 攔截器中自動執(zhí)行相關(guān)的增強(token 獲?。⑼ㄟ^擴展 WithSecurityContextFactory 實現(xiàn)上下文 token 的傳遞。具體可以參考源碼 pig-common-test[1]

引入依賴

<dependency>
 <groupId>com.pig4cloud</groupId>
 <artifactId>pig-common-test</artifactId>
 <version>${last.version}</version>
 <scope>test</scope>
</dependency>

單元測試 Controller 接口

指定認證中心接口

配置在 test/resources/application.yml

security:
 oauth2:
  client:
   access-token-uri: http://pig-gateway:3000/oauth/token

模擬測試 controller 接口

@RunWith(SpringRunner.class)
@SpringBootTest
public class SysLogControllerTest {

 private MockMvc mvc;

 @Autowired
 private WebApplicationContext applicationContext; // 注入WebApplicationContext

 @Before
 public void setUp() {
 this.mvc = MockMvcBuilders.webAppContextSetup(applicationContext).build();
 }

 @Test
 @SneakyThrows
 @WithMockOAuth2User
 public void testMvcToken() {
 mvc.perform(delete("/log/1").with(token())).andExpect(status().isOk());
 }
}

模擬測試 FeignClient 傳遞 token

直接注入 FeignClient 實現(xiàn)即可 使用 @WithMockOAuth2User 注解測試類即可

WithMockOAuth2User 屬性說明

當(dāng)前用例獲取 token 使用的用戶名

String username() default "admin";

當(dāng)前用例獲取 token 使用的密碼

String password() default "123456";

寫在最后

源碼參考 pig-common-test[1] 模塊

目前僅在 pig 2.10 做了實現(xiàn),理論支持低版本,直接 install 此模塊即可

參考資料

[1] pig-common-test: https://gitee.com/log4j/pig/tree/master/pig-common/pig-common-test

到此這篇關(guān)于Spring OAuth2.0 單元測試解決方案的文章就介紹到這了,更多相關(guān)Spring OAuth2.0 單元測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • AQS核心流程解析cancelAcquire方法

    AQS核心流程解析cancelAcquire方法

    可以清楚的看到在互斥鎖和共享鎖的拿鎖過程中都是有調(diào)用此方法的,而cancelAcquire()方法是寫在finally代碼塊中,并且使用failed標(biāo)志位來控制cancelAcquire()方法的執(zhí)行
    2023-04-04
  • 基于Freemarker和xml實現(xiàn)Java導(dǎo)出word

    基于Freemarker和xml實現(xiàn)Java導(dǎo)出word

    這篇文章主要介紹了基于Freemarker和xml實現(xiàn)Java導(dǎo)出word,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java 使用多線程調(diào)用類的靜態(tài)方法的示例

    Java 使用多線程調(diào)用類的靜態(tài)方法的示例

    這篇文章主要介紹了Java 使用多線程調(diào)用類的靜態(tài)方法的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • 關(guān)于idea一直卡在build不動的解決方案

    關(guān)于idea一直卡在build不動的解決方案

    這篇文章主要介紹了idea一直卡在build不動的解決方案,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • java中struts 框架的實現(xiàn)

    java中struts 框架的實現(xiàn)

    本文給大家介紹的是java中struts 框架的實現(xiàn),有需要的小伙伴可以參考下。
    2015-06-06
  • Spring?Security如何實現(xiàn)升級密碼加密方式詳解

    Spring?Security如何實現(xiàn)升級密碼加密方式詳解

    這篇文章主要為大家介紹了Spring?Security實現(xiàn)升級密碼加密方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 淺談java對象之間相互轉(zhuǎn)化的多種方式

    淺談java對象之間相互轉(zhuǎn)化的多種方式

    這篇文章主要介紹了淺談java對象之間相互轉(zhuǎn)化的多種方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 使用Lombok時@JsonIgnore注解失效解決方案

    使用Lombok時@JsonIgnore注解失效解決方案

    這篇文章主要為大家介紹了使用Lombok時@JsonIgnore注解失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • JavaCV獲取視頻文件時長的方法

    JavaCV獲取視頻文件時長的方法

    這篇文章主要為大家詳細介紹了JavaCV獲取視頻文件時長的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • springboot項目快速搭建的方法步驟

    springboot項目快速搭建的方法步驟

    這篇文章主要介紹了springboot項目快速搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論