玩轉springboot之SpringBoot單元測試

SpringBoot單元測試

spring單元測試

之前在spring項目中使用單元測試時是使用注解@RunWith(SpringJUnit4ClassRunner.class)來進行的

@RunWith(SpringJUnit4ClassRunner.class)//?通過自動織入從應用程序上下文向測試本身注入bean
@WebAppConfiguration?//?指定web環境
@ContextConfiguration(locations?
=?{?//?指定配置文件
????????"classpath*:springmvc.xml"
})

使用@WebAppConfiguration注解之后還可以注入WebApplicationContext環境

@Autowired
private?WebApplicationContext?webApplicationContext;

private?MockMvc?mockMvc;

@Before
public?void?setup(){
????mockMvc?=?MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
MockMvc

我們可以使用MockMvc來進行模擬請求

@Test
public?void?test()?throws?Exception?{
????MockHttpServletResponse?response?=?mockMvc.perform(MockMvcRequestBuilders.get("/json/testJson"))
????????????.andExpect(MockMvcResultMatchers.status().isOk())
????????????.andReturn().getResponse();
????System.out.println(response.getContentAsString());

}
web安全測試

我們項目中經常會使用spring-security來進行權限,這就給我們的測試帶來了麻煩,可以使用spring-security-test依賴來進行測試

<dependency>
????????????<groupId>org.springframework.security</groupId>
????????????<artifactId>spring-security-test</artifactId>
????????????<version>5.1.5.RELEASE</version>
????????????<scope>test</scope>
????????</dependency>

在進行開啟支持springSecurity

@Before
public?void?setup(){
????mockMvc?=?MockMvcBuilders
????????????.webAppContextSetup(webApplicationContext)
????????????.apply(SecurityMockMvcConfigurers.springSecurity())
????????????.build();
}

在寫單元測試方法時,可以使用@WithMockUser來設置用戶

@Test
@WithMockUser(username?=?"root",password?=?"123456",roles?=?"ADMIN")
public?void?testSecurity()?throws?Exception?{
????MockHttpServletResponse?response?=?mockMvc.perform(MockMvcRequestBuilders.get("/json/testJson"))
????????????.andExpect(MockMvcResultMatchers.status().isOk())
????????????.andReturn().getResponse();
????System.out.println(response.getContentAsString());

}

然后使用測試的UserDetails來進行用戶驗證@WithUserDetails("root")

springboot單元測試

springboot中可以使用@SpringBootTest來進行單元測試,其中設置webEnvironment可以來定義運行模式,并在測試用例上使用@RunWith(SpringRunner.class)注解

enum?WebEnvironment?{

???//?加載WebApplicationContext,并提供一個mock?servlet環境,使用該模式內嵌的servlet容器不會啟動
???MOCK(false),

???//?加載EmbeddedWebApplicationContext,并提供一個真實的servlet環境,內嵌servlet容器啟動,并監聽一個隨機端口
???RANDOM_PORT(true),

???//?加載EmbeddedWebApplicationContext,并提供一個真實的servlet環境,內嵌servlet容器啟動,并監聽一個定義好的接口
???DEFINED_PORT(true),

??//?使用SpringApplication加載一個ApplicationContext,但不提供servlet環境
???NONE(false);

}

示例

@RunWith(SpringRunner.class)
@SpringBootTest
public?class?DemoApplicationTests?
{

???@Autowired
???private?CustomConfig?config;

???@Test
???public?void?testProfile()?{
??????System.out.println(config.getName());
???}

}

https://zhhll.icu/2022/框架/springboot/基礎/17.springboot單元測試/

本文由 mdnice 多平臺發布

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43638.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電商出海第一步,云手機或成重要因素

電商出海第一步并非易事&#xff0c;挑戰和機遇并存&#xff0c;出海企業或個人或將借助云手機從而達成商業部署全球化的目的&#xff1b; 下面我們從網絡穩定、數據安全、成本、以及多平臺適配方面來看&#xff0c;究竟為什么說云手機會成為出海的重要因素&#xff1b; 首先…

新手前端系列入門-什么是前端開發

一、什么是前端 前端&#xff0c;也稱為前端開發或客戶端開發&#xff0c;一般是指在構建網站或Web應用程序時&#xff0c;與用戶直接交互的部分。就是指那些我們在網頁上能看到、能直接跟用戶打交道的部分。 簡單來說&#xff0c;就是你打開一個網站&#xff0c;能看到的所有…

西門子大手筆又買一家公司,2024年“兩買”和“兩賣”的背后……

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》 更多的海量【智能制造】相關資料&#xff0c;請到智能制造online知識星球自行下載。 今年&#xff0c;這家全球工業巨頭不僅精準出擊&#xff0c…

第4章 引擎提供的著色器工具函數和數據結構

4.1 UnityShaderVariables.cginc文件中的著色器常量和函數 4.1.1 進行變換操作用的矩陣 1.判斷USING DIRECTIONAL LIGTH宏是否定義并分析與立體渲染相關的宏 立體多例化渲染技術的核心思想是一次向渲染管道上提交兩份待渲染的幾何體數據&#xff0c;減少繪制調用&#xff08;d…

【信創國產化】Nacos 2.3.2連接達夢數據庫

JeecgBoot 目前提供的nacos版本號 2.3.2已經支持與達夢數據庫對接。 jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos項目默認加入了達夢驅動和yml配置。如果你是老代碼&#xff0c;可以參考下面的步驟手工集成 項目地址&#xff1a;https://github.com/jeecgboot/JeecgBoot…

Anaconda 安裝與基本使用總結

最近需要在服務器上安裝和使用aconada&#xff0c;發現之前總是在網上找教程&#xff0c;每次都要找&#xff0c;很麻煩。這次就自己寫一個安裝筆記。以備日后使用。 1.服務器系統版本 ubuntu22.04 2. 軟件安裝 aconda軟件的安裝可以下面的教程&#xff08;實測有效&#xf…

斐波那契查找算法

斐波那契查找原理&#xff0c;僅僅改變了中間結點(mid)的位置&#xff0c;mid不再是中間或插值得到,而是位于黃金分割點附近&#xff0c;即midlowF(k-1)-1(F代表斐波那契數列) F[k]F[k-1]F[k-2],>(F[k]-1) (F[k-1]-1)(F[k-2]-1)1 說明:只要順序表的長度為F[k]-1,則可以將該…

arm64架構kvm情景分析 - type1型和type2型虛擬機管理器

內核版本&#xff1a;linux-v5.9 架構&#xff1a;arm64 1 type1型和type2虛擬機管理器 在arm64架構中&#xff0c;共有EL3到EL0四個異常級別&#xff0c;EL3異常級別最高。通常操作系統&#xff08;如linux&#xff09;運行在EL1&#xff0c;應用程序運行在EL0&#xff0c;EL…

Apache中使用CGI

Apache24 使用Visual Studio 2022 // CGI2.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。 // #include <stdio.h> #include <stdlib.h>#include <stdio.h>void main() {//設置HTML語言printf("Content-type:text/html\n\n&q…

柯橋外語學校【韓語干貨】“-? ??” VS “-?/?/? ??”

01 相同點 都可以用于動詞之后&#xff0c;且形式有相似之處。 &#xff08;1&#xff09;?? ?? ??? ?? ????. 敏鎬正在打電話。 &#xff08;2&#xff09;?? ?? ??? ???? ????. 黃珉正在學習英語。 &#xff08;3&#xff09;? ??? ? …

06_Shell內置命令

06_Shell內置命令 一、如何判斷是否內置命令 使用type命令可以區分命令種類 二、alias #!/bin/bash#設置別名 psef alias psef"ps -ef | grep java"#刪除別名 psef unalias psef#刪除所有別名 unalias -a以上設置都是臨時性的&#xff0c;真正永久設置&#xff0c;…

“離職員工”試圖打包資料帶走,如何防止敏感數據外泄?

2010年5月間&#xff0c;某家電巨頭四名前職工非法泄露該家電洗衣機重要生產和采購環節數據&#xff0c;給家電集團造成直接經濟損失共計2952.35萬元。 2017年1月&#xff0c;某科技巨頭消費者終端業務6名員工&#xff0c;離職后拿著該企業終端的知識產權結果賺錢&#xff0c;最…

Flask和Django兩個Web框架的特點和適用場景

Flask與Django是兩個非常流行的Python Web框架&#xff0c;它們各有獨特的特點和適用場景。下面將從不同方面對這兩個框架進行比較。 一、特點比較 1. 輕量級與全功能 Flask&#xff1a; 輕量級&#xff1a;Flask是一個微框架&#xff0c;代碼量少&#xff0c;靈活性高&…

【系統架構設計師】九、軟件工程(軟件測試)

目錄 八、軟件測試 8.1 測試分類 8.2 靜態方法 8.2.1 靜態測試 8.2.2 動態測試 8.2.3 自動化測試 8.3 測試階段 8.3.1 單元測試 8.3.2 集成測試 8.3.3 確認測試 8.3.4 系統測試 8.3.5 性能測試 8.3.6 驗收測試 8.3.7 其他測試 8.4 測試用例設計 8.4.1 黑…

編程視頻用什么軟件好看:探索最佳編程教學工具

編程視頻用什么軟件好看&#xff1a;探索最佳編程教學工具 在數字化時代&#xff0c;編程技能已成為一項不可或缺的核心競爭力。然而&#xff0c;對于初學者來說&#xff0c;如何有效地學習編程卻是一個令人困惑的問題。觀看編程視頻成為了一種流行的學習方式&#xff0c;但如…

Spring-Data-ES-template工具類使用

SpringDataElasticsearch 提供了一個工具類 ElasticsearchTemplate&#xff0c;我們使用該類對象也可以對 ES 進行操作 1.操作索引 首先注入操作ES所需要的工具類(ElasticsearchTemplate)。 Autowiredprivate ElasticsearchTemplate template; 將createIndex改為false Docu…

springboot在線教育平臺-計算機畢業設計源碼68562

摘要 在數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;在線教育已成為教育領域的重要趨勢。為了滿足廣大學習者對于靈活、高效學習方式的需求&#xff0c;基于Spring Boot的在線教育平臺應運而生。Spring Boot以其快速開發、簡便部署以及良好的可擴展性&#xff0c…

N6 word2vec文本分類

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊# 前言 前言 上周學習了訓練word2vec模型&#xff0c;這周進行相關實戰 1. 導入所需庫和設備配置 import torch import torch.nn as nn import torchvision …

【啟明智顯分享】樂鑫HMI方案4.3寸觸摸串口屏:水質檢測儀應用解決方案

水是萬物的源泉&#xff0c;了解水的酸堿度對于保障我們的健康、生產和生活環境至關重要。水質檢測儀應運而生&#xff0c;它讓我們能夠洞察水的酸堿奧秘。 水是萬物的源泉&#xff0c;了解水的酸堿度對于保障我們的健康、生產和生活環境至關重要。水質檢測儀應運而生&#xff…

springboot藥房庫存管理系統-計算機畢業設計源碼50588

目 錄 摘要 1 緒論 1.1 研究背景與意義 1.2開發現狀 1.3論文結構與章節安排 2 藥房庫存管理系統系統分析 2.1 可行性分析 2.1.1 技術可行性分析 2.1.2 經濟可行性分析 2.1.3 法律可行性分析 2.2 系統功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系統用例分…