Gradle中获取可用端口

作者:

在项目需要用到集成测试,即打包整个项目,通过容器启动,然后直接测试。

测试的环境不一定是稳定的,所以容器对外的端口最好是保证可用的。

以一个Spring Boot的项目为例子,使用gretty插件来启动应用。

gretty {
springBoot =false
port =7777
integrationTestTask = 'e2eTest'
}

如果端口7777被占用,那么测试就会失败。

稍微修改一下,使用AvailablePortFinder来寻找可用端口。

AvailablePortFinderavailablePortFinder = AvailablePortFinder.createPrivate()
IntegerhttpPort = availablePortFinder.nextAvailable

gretty {
springBoot =false
port = httpPort
integrationTestTask = 'e2eTest'
}

这样项目启动时的端口就可以保证可用性了。

在测试中的使用也很简单,因为gretty对于集成测试的支持很好,相关属性都会写入系统属性以供测试使用。

在测试中可以这样使用

privatefinalstatic String baseUrl ="http://localhost:8080/budget";

static {
RestAssured.defaultParser = Parser.JSON;
String property = System.getProperty("gretty.httpBaseURI");
if (property !=null) {
RestAssured.baseURI = property;
}else {
RestAssured.baseURI = baseUrl;
}
}

评论

2 条对“Gradle中获取可用端口”的回复

  1. 匿名

    请问,怎么改端口号哦。。。

    1. 匿名

      评论错了。。忽视这个问题吧。谢谢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注