如何在SpringBoot测试中获取正在运行的服务器端口?

时间:2018-11-28 16:30:09

标签: java spring spring-boot

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

我尝试过

@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}

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

1 个答案:

答案 0 :(得分:2)

您能尝试一下吗?

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

    @LocalServerPort
    private int rdmServerPort;

    @LocalManagementPort
    private int rdmManagementPort;
        ...
}