java - 如何在 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}
其中端口是运行测试的随机端口。
解决方案
你能试试这个:
@SpringBootTest(classes = {Application.class}, webEnvironment = WebEnvironment.RANDOM_PORT)
public class test{
@LocalServerPort
private int rdmServerPort;
@LocalManagementPort
private int rdmManagementPort;
...
}
推荐阅读
- java - 为什么程序启动后的第一个并行Stream比后续的运行慢
- c# - 如果 DispatcherTimer 上剩余特定时间,则发生某些事情
- c++ - C ++如何使用16色(4位)位图在内存中获取屏幕截图输出
- ios - ld:来自 [...]/libReactNativeNavigation.a 的类别中的元方法“UIBarButtonSystemItem:”与来自另一个类别的相同方法冲突
- android - 无法解决:com.google.android.gms:play-services-basement:12.0.1
- flutter - Flutter ListView.Builder() 在可滚动列中与其他小部件
- plsql - PL\SQL 中不同字符串中的正则表达式 substr 起始位置
- reactjs - 使用 dispatch 和 getState 时的 Redux 操作返回类型
- python - 使用 python 在 Windows 中拆分带有标题的 CSV 文件,并从行开头和结尾删除文本限定符
- sonarqube - 无法在项目上执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar (default-cli)