gpt4 book ai didi

spring-boot - SpringBootTest.WebEnvironment:什么时候必须使用RANDOM_PORT和DEFINED_PORT?

转载 作者:行者123 更新时间:2023-12-04 02:48:27 26 4
gpt4 key购买 nike

对于Spring Boot进行测试,它可以与@SpringBootTest一起使用,并与SpringBootTest.WebEnvironment枚举一起使用。好吧,根据javadoc,它有4个值。

此外,我已经阅读了Testing Spring Boot Applications部分

对我来说很清楚,NONE仅用于测试服务器端,而MOCK则用于通过Web端测试所有服务器端(以解决Spring MVC Test问题)。直到这里我还好。我都用。

其他两个:RANDOM_PORTDEFINED_PORTto start a full running server有关,它与Testing with a running server部分(该部分的第一段开始)一致

两个问题:


在什么情况下必须使用full running server
强制使用RANDOM_PORTDEFINED_PORT的特定方案有哪些?

最佳答案

如果要测试应用程序,通常会使用一台运行完整的服务器,因为它将在生产中使用。对于运行中的服务器,您可以通过TCP网络连接向服务器发出HTTP请求。这涉及测试中的网络堆栈和servlet容器。相比之下,当您使用Spring MVC测试时,将直接通过模拟请求调用Spring Framework的DispatcherServlet。不涉及网络堆栈和servlet容器。

DEFINED_PORT表示您的服务器将在TCP套接字上侦听特定端口上的HTTP请求。默认情况下为8080。如果您在不知道特定端口是否可用的环境中进行测试,则由于端口冲突而导致测试失败。

RANDOM_PORT表示服务器将在操作系统分配的端口上启动,并保证该端口可用。 Spring Boot通过在测试类的字段上使用@LocalServerPort批注使此端口对您的应用程序可用。它还会自动配置默认的TestRestTemplate实例以使用此端口。

关于spring-boot - SpringBootTest.WebEnvironment:什么时候必须使用RANDOM_PORT和DEFINED_PORT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48918706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com