gpt4 book ai didi

java - Reserve-port-plugin 与新的 ServerSocket(0) 进行测试

转载 作者:行者123 更新时间:2023-12-02 08:42:00 25 4
gpt4 key购买 nike

我有 Junit 测试,它启动套接字服务器并向其发送请求。通常我使用 reserve-port-plugin让 Maven 分配随机端口并通过系统属性传递它来测试。但现在我在文档中读到 new ServerSocket(0) 使用“自动分配”端口号分配新套接字。 Javadoc说:

A port number of 0 means that the port number is automatically allocated, typically from an ephemeral port range.

使用 new ServerSocket(0) 看起来比配置 Maven 插件要容易得多,但尚不清楚这种“自动分配”的工作原理如何。例如。它在分配之前检查开放权限吗?在测试中使用这两种方法进行随机端口分配是否相同?

最佳答案

您可以阅读源代码来了解它们是如何工作的,尽管我怀疑每个操作系统都有一些变化,我会警告不要依赖它们。

我认为理解为什么使用其中一种与另一种可能更有用。在小范围内使用 new ServerSocket(0) 更容易,但可能会导致奇怪的绑定(bind)/依赖关系,具体取决于您的测试系统。

例如,如果您想要启动一个完整的 Web 应用程序,并对其运行 selenium 测试,我会推荐 Maven 解决方案。尝试向 servlet 容器提供服务器套接字要么困难且脆弱,要么可能不可能。

另一方面,对于非常封闭的套接字类型测试,new ServerSocket(0) 方法可能更简单。

关于java - Reserve-port-plugin 与新的 ServerSocket(0) 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324504/

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