国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot測試(Junit單元測試、MockMvc測試Http請求 )

這篇具有很好參考價值的文章主要介紹了SpringBoot測試(Junit單元測試、MockMvc測試Http請求 )。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Java知識點總結(jié):想看的可以從這里進入

2.13、測試

測試就是在開發(fā)過程中用來檢測某一段代碼的功能是否能正確執(zhí)行,Spring Boot 項?創(chuàng)建時會默認單元測試框架 spring-boot-test,它Spring Test、JUnit等其他測試框架結(jié)合起來(JUnit 5、AssertJ、Hamcrest、Mockito、JSONassert、JsonPath、Spring Test和Spring Boot Test)。

在使用測試是可以直接通過啟動器:spring-boot-starter-test得到測試的支持。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

在SpringBoot中提供了一些注解來幫助我們進行測試:

  1. @SpringBootTest:尋找一個主配置類(@SpringBootApplication),并使用它來啟動Spring應(yīng)用程序上下文。SpringBootTest加載完整的應(yīng)用程序并注入所有可能的bean,因此需要一定時間。

    1. MOCK(默認值):加載web ApplicationContext并提供一個模擬web環(huán)境,嵌入式服務(wù)器不會啟動,可以與@AutoConfigureMockMvc或@AutoConfigureWebTestClient一起使用,用于基于模擬的web應(yīng)用程序測試。
    2. RANDOM_PORT:加載一個WebServerApplicationContext并提供一個真實的web環(huán)境。嵌入式服務(wù)器在一個隨機端口上啟動并監(jiān)聽。
    3. DEFINED_PORT:加載WebServerApplicationContext并提供一個真實的web環(huán)境。嵌入式服務(wù)器將啟動并在一個已定義的端口(yml中)或默認端口8080上偵聽。
    4. NONE:通過使用SpringApplication加載ApplicationContext,但不提供任何web環(huán)境(模擬或其他)。
  2. @Test:用在方法上進行測試實際的業(yè)務(wù)邏輯

  3. @AutoConfigureMockMvc:和SpringBootTest 一起使用,可以自動配置MockMvc,測試Controller

2.12.1、 Junit單元測試
1、測試

需要添加用于單元測試的啟動器,該啟動器會自動導(dǎo)入 junit 的相關(guān)依賴:

<!--單元測試-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

使用測試 可以對項目中的方法進行測試,看它的執(zhí)行是否能達到我們的預(yù)期效果,對相應(yīng)的類創(chuàng)建對應(yīng)的測試類,在方法上添加注解 @Test,就能使測試方法如同 main方法一樣可以直接運行,這樣就能觀察到該方法最終執(zhí)行的效果。

我們可以使用 IDEA 對某個類直接生成單元測試類。

  • 在相應(yīng)的類中 按 ctrl+shitf+T快捷鍵

  • 選擇需要測試的方法,并生成測試的類(?成了單元測試的框架類,具體的業(yè)務(wù)代碼要??填充)

  • 選擇一個select 方法生成測試類

  • 添加注解SpringBootTest注解(可以加載被管理的Bean),并編寫業(yè)務(wù)邏輯

2、常用注解
  1. @SpringBootTest:是一個組合注解,內(nèi)部含有 JUnit5中使用 的運行器注解 @ExtendWith

  2. @Test:用在方法上,表示該方法是一個測試用方法,使可以運行

  3. @DisplayName(“名稱”):給測試類設(shè)置一個名稱

  4. 增強處理

    1. @BeforeEach:前置方法,每個測試方法執(zhí)行前都會執(zhí)行
    2. @AfterEach:后置方法,在每個測試方法執(zhí)行后都會執(zhí)行
    3. @BeforeAll:表示在所有測試方法之前執(zhí)行
    4. @AfterAll:表示在所有測試方法之后執(zhí)行
    @SpringBootTest
    @Slf4j
    class JunitTest {
        @Test
        public void test() {
            log.info("測試1");
        }
        @Test
        public void test2() {
            log.info("測試2");
        }
        @Test
        public void test3(){
            log.info("測試3");
        }
    
        @BeforeEach
        public void BeforeEach(){
            log.info("在每個方法執(zhí)行前執(zhí)行");
        }
        @AfterEach
        public void afterEach(){
            log.info("在每個方法執(zhí)行后執(zhí)行");
        }
        @BeforeAll
        static void beforeAll(){
            log.info("在所有測試方法執(zhí)行前執(zhí)行");
        }
        @AfterAll
        static void afterAll(){
            log.info("在所有測試方法執(zhí)行后執(zhí)行");
        }
    }
    
  5. @Disabled:用在測試方法前,單獨執(zhí)行該方法時可以運行,但是如果點擊測試類運行測試類內(nèi)所有方法時,則加上此注解的方法不會運行

    springboot 測試代碼,springboot,junit,單元測試,spring boot

  6. @Timeout(value =超時時間,unit = 超時時間單位):設(shè)置方法的執(zhí)行時間,如果超時會出現(xiàn)異常。

    TimeUnit.DAYS:代表二十四小時的時間單位

    TimeUnit.HOURS:代表六十分鐘的時間單位

    TimeUnit.MINUTES:代表六十秒的時間單位。

    TimeUnit.SECONDS:時間單位代表一秒

    TimeUnit.MILLISECONDS:表示千分之一秒的時間單位。

    TimeUnit.MICROSECONDS:表示千分之一毫秒的時間單位

    TimeUnit.NANOSECONDS:表示千分之一微秒的時間單位

  7. @RepeatedTest(次數(shù)) :該方法每次運行都會執(zhí)行指定次數(shù)。需要去掉@Test注解

    springboot 測試代碼,springboot,junit,單元測試,spring boot

    springboot 測試代碼,springboot,junit,單元測試,spring boot

3、斷言

其中類Assertions是支持在測試中斷言條件的實用方法的集合,除非另有說明,否則失敗的斷言將拋出org.opentest4j.AssertionFailedError或其子類。所有 JUnit斷言 都是 org.junit.jupiter.Assertions 類中的靜態(tài)方法

1、assertTrue(boolean condition):判斷給定的boolean是否為true
2、assertFalse(boolean condition):判斷給定的boolean是否為false
3、assertNull(Object actual):判斷 Object 是否為null
4、assertNotNull(Object actual):判斷 Object 不是null
5、assertEquals(o1,o2):判斷兩個對象是否相等
6、assertArrayEquals([],[]):判斷連個數(shù)組是否相等
2.12.2、MockMvc

Junit 無法測試Controller中的方法,因為它是一種網(wǎng)絡(luò)請求,所有我們可以使用 MockMvc 對Controller方法 進行測試

MockMvc是由spring-test包提供,MockMvc實現(xiàn)了對Http請求的模擬,能夠直接使用網(wǎng)絡(luò)的形式,轉(zhuǎn)換到Controller的調(diào)用,使請求的驗證變得更加方便。

這里有兩個注解:

  • @WebMvcTest:使用此注解會禁用完全自動配置,僅僅配置MVC相關(guān)配置

  • @AutoConfigureMockMvc:自動配置MockMvc

使用@AutoConfigureMockMvc+@SpringBootTest進行測試:

  • 正常創(chuàng)建Controller

    @Controller
    @RequestMapping("/testMockMvc")
    public class UserinfoController {
        @Resource
        private UserinfoService userinfoService;
    
        @GetMapping("/getUserinfo")
        @ResponseBody
        public Userinfo userinfo(long id){
            return userinfoService.getById(id);
        }
    
        @GetMapping("/hello")
        public String hello(String name , Model model){
            model.addAttribute("user", name+"歡迎歡迎");
            return "hello";
        }
    }
    
  • 編寫測試類

    @SpringBootTest
    @AutoConfigureMockMvc
    public class UserControllerTest {
       
        @Autowired
        private MockMvc mockMvc;
        /*
         * 1、mockMvc.perform執(zhí)行一個請求。
         * 			MockMvcRequestBuilders.get("XXX") get提交訪問controller的一個接口。
         *    		MockMvcRequestBuilders.post("XXX") post提交訪問controller的一個接口。
         * 			.param  傳遞的參數(shù)
         * 			.accept(MediaType.TEXT_HTML_VALUE))接受的響應(yīng)結(jié)果的文檔類型
         *    		.contentType   請求數(shù)據(jù)的文檔類型
         *			.content()   可以傳遞JSON數(shù)據(jù)
         * 2、.andExpect  添加執(zhí)行完成后的斷言。
         * 3、.andDo  添加一個結(jié)果處理器,表示要對結(jié)果做點什么事情
         *   比如此處使用MockMvcResultHandlers.print()輸出整個響應(yīng)結(jié)果信息。
         * 7、.andReturn表示執(zhí)行完成后返回相應(yīng)的結(jié)果。
         */
        @Test
        public void getUserinfo() throws Exception {
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/testMockMvc/getUserinfo")
                            .param("id","1")
                            .contentType(MediaType.APPLICATION_JSON)
                    ).andDo(print())
                    .andExpect(status().isOk())
                    .andReturn();
    
        }
        @Test
        public void hello() throws Exception {
            MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/testMockMvc/hello")
                            .param("name","yu")
                    ).andDo(print())
                    .andExpect(status().isOk())
                    .andReturn();
    
        }
    }
    
  • 測試頁面跳轉(zhuǎn)

  • 測試返回數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-735706.html

到了這里,關(guān)于SpringBoot測試(Junit單元測試、MockMvc測試Http請求 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Spring Cloud中Controller單元測試 Junit5 & MockMvc

    在Spring Cloud中進行Controller的單元測試,使用Junit5和Mock。 Controller: 方式一:使用@SpringBootTest + @AutoConfigureMockMvc 方式二:使用@WebMvcTest + @ImportAutoConfiguration(RefreshAutoConfiguration.class) 解決 No Scope registered for scope name \\\'refresh\\\' 異常 注入Mockmvc方式有兩種 方式一:(@AutoConfigureMockMvc / @

    2024年02月16日
    瀏覽(21)
  • SpringBoot 集成Junit單元測試

    SpringBoot 集成Junit單元測試

    學(xué)習(xí)文章: https://www.cnblogs.com/ysocean/p/6889906.html 開發(fā)工具: IDEA 2022.1.4 目錄 目錄 1. 概述 ?2. 實現(xiàn)步驟 ??????? 2.1 maven導(dǎo)入依賴 ???????? 2.2 隨意代碼演示(不推薦) ??????? 2.3 規(guī)范代碼演示(推薦) 3. Junit相關(guān)其他注解 4. 注意事項 5. 結(jié)語 ??????? 接觸到Junit,應(yīng)該是看

    2024年02月09日
    瀏覽(22)
  • 【SpringBoot】mockito+junit 單元測試

    【SpringBoot】mockito+junit 單元測試

    CommonServiceImpl 在方法 getSourceCodeMap() 調(diào)用了 ServiceA 的方法 list(QueryBO queryBo) 。 org.mockito.exceptions.base.MockitoException: No tests found in ClientSyncServiceImplTest Is the method annotated with @Test? Is the method public? 解決方案: Test引入 org.junit.Test 不要引入 org.junit.jupiter.api.Test 例如獲取當(dāng)前用戶 moc

    2024年02月09日
    瀏覽(30)
  • junit單元測試 mybatis 單獨測試 springboot

    目錄 省流: 正文 一、直接測(無需配置掃描和xml) 1. 場景 2. 無需配置掃描,直接在測試類注入Mapper 3. 報錯 補充: 關(guān)于@RunWith 常見的報錯: 1.包名不同導(dǎo)致報錯 test目錄下配置文件:application.yml中配置數(shù)據(jù)庫信息。 test目錄下各類:直接寫測試類即可,直接調(diào)用main目錄下各

    2024年02月07日
    瀏覽(25)
  • SpringBoot 中如何利用 Junit 實現(xiàn)單元測試?

    SpringBoot 中如何利用 Junit 實現(xiàn)單元測試?

    2024軟件測試面試刷題,這個小程序(永久刷題),靠它快速找到工作了?。ㄋ㈩}APP的天花板)_軟件測試刷題小程序-CSDN博客 文章瀏覽閱讀2.5k次,點贊85次,收藏11次。你知不知道有這么一個軟件測試面試的刷題小程序。里面包含了面試常問的軟件測試基礎(chǔ)題,web自動化測試、

    2024年03月11日
    瀏覽(24)
  • springboot Junit單元測試默認事務(wù)不提交

    因為以前總覺得Junit單元測試配置比較繁瑣,代碼功能大多使用main方法或者postman測試,直到最近才使用單元測試,在測試過程中遇到了事務(wù)不提交的問題,一直以為是代碼問題,后來才直到單元測試 默認不提交事務(wù) ,記錄下來,防止以后再次踩坑。 如上,入庫操作不會實現(xiàn)

    2024年02月10日
    瀏覽(23)
  • 13.Springboot整合junit5單元測試與生成單元測試覆蓋率

    13.Springboot整合junit5單元測試與生成單元測試覆蓋率

    現(xiàn)在基本大公司都要求單元測試了,保證我們代碼得質(zhì)量,而我司更是要求覆蓋率要達到60%以上,所以搞一下。 這里有兩個方法: 1.使用maven自帶得test,idea右側(cè)maven模塊執(zhí)行項目下得test 2.使用cmd命令,在你的項目pom文件所在目錄 ,打開cmd,執(zhí)行如下: 結(jié)果如下:打開site文

    2024年02月16日
    瀏覽(23)
  • SpringBoot2---單元測試(Junit5)(1)

    SpringBoot2---單元測試(Junit5)(1)

    org.junit.vintage junit-vintage-engine test org.hamcrest hamcrest-core org.springframework.boot spring-boot-starter-test test 現(xiàn)在版本: @SpringBootTest class Boot05WebAdminApplicationTests { @Test void contextLoads() { } } 以前: @SpringBootTest + @RunWith(SpringRunner.class) SpringBoot整合Junit以后。 編寫測試方法:@Test標(biāo)注(注意需要

    2024年04月29日
    瀏覽(17)
  • SpringBoot單元測試--Mockito+Junit5框架使用

    SpringBoot單元測試--Mockito+Junit5框架使用

    作為程序員為了提前發(fā)現(xiàn)代碼bug,優(yōu)化代碼; 通常我們寫完某個功能模塊代碼后都需要寫單元測試對代碼塊進行測試(特別是敏捷開發(fā)中);Java項目最常用的單元測試框架即為Junit(目前最新版本為Junit5),SpringBoot本身也整合了該框架。在寫單元測試時代碼塊中的調(diào)到第三方接口方

    2024年02月02日
    瀏覽(23)
  • 靜態(tài)方法 單元測試 springboot+mokito+junit5

    CodecUtils的方法是靜態(tài)類,使用@InjectMocks不能有用,因為這個注解只能用于非靜態(tài)的對象。 想要為靜態(tài)方法寫單元測試,可以使用Mockito.mockStatic(Class classToMock)方法,它可以返回一個MockedStatic對象,用于模擬靜態(tài)方法的調(diào)用。 1.導(dǎo)入依賴 2.單元測試 可以參考如下地址,了解如何

    2024年04月25日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包