首页 > 解决方案 > 如何在 SpringBoot 测试中获取正在运行的服务器端口?

问题描述

我正在为带有 Apache Camel 路由的 Spring Boot 应用程序创建一些单元测试,使用 Spock 作为测试框架,我需要模拟来自另一个应用程序的响应。我为此制作了一个模拟控制器,但我需要将运行测试的端口注入到一个属性中。有没有办法获取运行测试的端口?

我试过了

@LocalServerPort
private int port 

@Autowired Environment environment;
String port = environment.getProperty("local.server.port");

但两者都返回-1,我不知道任何其他方法来获取端口

我的测试配置了以下注释:

@RunWith(SpringRunner)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles('test')

另外,有没有办法在application-test.yml文件中注入那个随机端口?理想情况下,我需要在我的application-test.yml文件中执行以下操作:

app:
  service: localhost:${server.port}

其中端口是运行测试的随机端口。

标签: javaspringspring-boot

解决方案


你能试试这个:

@SpringBootTest(classes = {Application.class}, webEnvironment = WebEnvironment.RANDOM_PORT)
    public class test{

    @LocalServerPort
    private int rdmServerPort;

    @LocalManagementPort
    private int rdmManagementPort;
        ...
}

推荐阅读