首页 > 其他分享 >@AutoConfigureMockMvc测试发送虚拟请求

@AutoConfigureMockMvc测试发送虚拟请求

时间:2024-07-30 11:42:11浏览次数:13  
标签:web AutoConfigureMockMvc springframework 发送 SpringBootTest 虚拟 org test import

package com.atheima;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.result.StatusResultMatchers;

@SpringBootTest(args = {"--test.prop=123"},webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
class Springboot13ConfigurationApplicationTests {

    @Value("${test.prop}")
    private String msg;


    @Test
    void contextLoads() {
        System.out.println(msg);
    }

    @Test
    void testWeb(@Autowired MockMvc mockMvc){
        RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/books");
        try {
            ResultActions perform = mockMvc.perform(requestBuilder);
            StatusResultMatchers status = MockMvcResultMatchers.status();
            ResultMatcher ok = status.isOk();
            perform.andExpect(ok);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • @AutoConfigureMockMvc注解则是一个测试自动配置注解,它会自动配置MockMvc实例。MockMvc是一个强大的工具,允许你以编程方式模拟 HTTP 请求并验证响应,而无需启动实际的 Servlet 容器。
  • @SpringBootTest注解用于加载整个 Spring 应用程序上下文,包括你的应用程序配置和所有 Bean。
  • 使用@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)时,并不要求你必须和@AutoConfigureMockMvc一起启用。这两个注解服务于不同的目的,并且它们的使用是独立的。

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)告诉Spring Boot启动一个完整的Servlet容器,并监听一个预定义的端口(通常是由server.port属性指定的)。这意味着你的测试将能够通过网络层与运行中的Spring Boot应用程序进行交互,就像它是一个真正的Web应用程序一样。

然而,这种测试方式通常更重,因为它需要启动整个Servlet容器,并且可能需要处理网络延迟和并发问题。此外,由于它监听一个端口,因此不能在同一端口上同时运行多个这样的测试实例。

另一方面,@AutoConfigureMockMvc用于自动配置MockMvc,这是一个用于测试Spring MVC控制器的强大工具。它允许你以编程方式模拟HTTP请求并验证响应,而无需启动实际的Servlet容器或监听网络端口。
如果你需要测试整个应用程序的集成(包括网络层),并且不介意测试运行得更慢,那么你可以使用@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT),但通常你不会与@AutoConfigureMockMvc一起使用它,因为MockMvc是用于模拟HTTP请求的,而不是与真实运行的Servlet容器进行交互。

  • 请注意,即使你使用@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT),你仍然可以通过其他方式(如使用RestTemplate、WebClient或HttpClient等)来发送HTTP请求到你的Spring Boot应用程序,并验证响应。但是,这些方法不如MockMvc那样轻量级或方便,因为它们涉及到网络层的交互。

标签:web,AutoConfigureMockMvc,springframework,发送,SpringBootTest,虚拟,org,test,import
From: https://www.cnblogs.com/DuWenjie/p/18332030

相关文章

  • 微信公众号发送模板消息java
    packagecom.cloud.module.management.message.handler.mp;importcn.hutool.core.util.ObjectUtil;importcn.hutool.core.util.StrUtil;importcom.alibaba.fastjson2.JSON;importcom.alibaba.fastjson2.JSONObject;importcom.cloud.module.management.common.const......
  • [SDR] GNU Radio 系列教程 —— GNU Radio TX PDU (发送数据包操作)的基础知识(超全)
    目录1PDU概述2Demo详解2.1RandomPDUGenerator2.2AsyncCRC322.3ProtocolFormatter(Async)2.4将header和payload合并输出2.5对PDU实施突发填充和渐变2.6RRC滤波与多相任意重采样2.6.1FIR滤波器例子2.6.2滤波器基础及RRC知识1)什么时候用RRC?2)什么是RRC?3......
  • Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息
    依据前面文章《Zabbix5.0LTSURL健康监测》环境,实现企业微信(Webhook)自动发送告警信息。一、创建企业微信机器人先在自己的企业微信群里创建一个机器人,并获取其WebHook地址。右击群聊天卡片,添加群机器人。获得一个类似下图的WebHook地址。注意,这个WebHook地址非常......
  • 虚拟机建立的相关问题
    遇到VMwareWorkstation与Hyper-V不兼容。按照网上的相关操作,结果并不如人意。索性直接试试如何用Hyper-V来建立一个Linux操作系统。例如:http://t.csdnimg.cn/7RJDY结果进行到一半,发现出了下面的问题:目前正在头疼中...更新:http://t.csdnimg.cn/UO597从上面链接文章得......
  • 如何在Arch Linux上构建Raspberry Pi虚拟环境
    如何在Linux上构建RaspberryPi虚拟环境​ 下面我们来讲讲如何使用QEMU来仿照树莓派环境。这里首先先分成两大类。第一类是跑比较老的,安全性较低的老树莓派,主要指代的是22年4月份发布之前的版本,这个版本当中,树莓派镜像自己内部就配置了一份默认的账户密码。对于之后的版本则不配......
  • 虚拟机:GCC共享库在连接时的搜索位置和优选次序
    假设有两个相同的共享库,一个在标准的共享库搜索目录(/lib/i386-linux-gnu),一个在非标准目录(/home/charles/tmp):在/home/charles/tmp下有个测试程序main.c,调用共享库里的函数。用如下的命令编译:用ldd看一下link的共享库:可以看出,虽然我们指定了要使用/home/charles/tmp下的......
  • 【新手|非常简单】VMWare在NAT模式下为Centos7虚拟机配置静态IP
    检查VMWare的网络设置点击VMWare菜单栏中的“编辑”,点击“虚拟网络编辑器”检查一下NAT模式那一条,和我这里的设置是不是一样的(IP可能会不一样),我这里的设置是默认设置。如果不确定,可以点击“还原默认设置”。(你也可以尝试按着截图中的设置调)检查虚拟机的网络连接右键虚拟机,......
  • 多队列网卡-虚拟机Linux系统设置
    多队列网卡安装作者使用的是ubuntu20.04,VMWARE首先查看系统上的网卡ipa#查看网卡信息查看ens33是否支持多队列网卡,如果是下图这种情况就是不支持多队列网卡。cat/proc/interrupts|grepens33#proc是linux虚拟文件系统关闭虚拟机,添加多个网卡修改VMWAE......
  • curl发送get和post请求时遇到&截断的问题解决
    get的parameter里带&被截断处理第一种是双引号括住 第二种是加反斜杠转义 post请求的body里有参数的value带了&curl-XPOSThttp://qa-ci.fuxi.netease.com:36800/job/xxxxx/xxxx--userxxxx:xxxxx-d token=popo -d"msg=cd/ssd/deployment_bash&&bashkill.b......
  • 编写用于关键字检测和按钮发送的 Python Telegram 机器人
    我需要帮助用Python为我的Telegram机器人编写代码。我有一个config.py文件,其中包含两个关键字列表:keywords和button_phrases。keywords-负责在单击时显示子按钮的按钮。Button_phrases-负责单击时打开链接的按钮。我需要机器人检查用户输入的文本并按以下顺......