如何使用 gradle 测试服务器?
How can I test a server using gradle?
我有一个用 Java 编写的服务器,这是我的应用程序,我想 运行 对其进行一些测试。我正在使用 gradle 来管理依赖关系并构建任务和其他东西,所以我也想为此使用它。我需要启动服务器,然后 运行 我的单元测试对它发出一堆 HTTP 请求,然后理想情况下甚至在测试完成后关闭服务器。所以我尝试添加到我的 build.gradle test.dependsOn(jettyRunWar)
,(jettyRunWar 是 运行 的服务器),但我想这太简单了,因为 gradle test
从来没有 returns从 jettyRunWar 继续测试。我可以将其连接起来,以便 gradle 启动服务器然后 运行 进行测试吗?
是啊!雅必须添加
jettyRunWar {
daemon = true
}
给你的build.gradle。然后,如果你想在最后关闭服务器,你也必须加入这个:
stopPort = 1234
stopKey = 'stopKey'
// gradle is luser. Full story (and code copied from): https://issues.gradle.org/browse/GRADLE-2263
import org.gradle.api.plugins.jetty.internal.Monitor
[jettyRun, jettyRunWar]*.doLast {
/**
* THIS IS A WORKAROUND! THE CURRENT VERSION OF THIS TASK DOESN'T START A WATCHER IN DAEMON MODE
*
* If starting the monitor fails, it may be because the jetty task was updated to fix this issue
* When that happens, we shouldn't need the custom task any more
*
* Copied From: AbstractJettyRunTask
*/
if (getStopPort() != null && getStopPort() > 0 && getStopKey() != null) {
Monitor monitor = new Monitor(getStopPort(), getStopKey(), server.getProxiedObject());
monitor.start();
}
}
确保包含关于 "gradle is luser" 的评论。
我有一个用 Java 编写的服务器,这是我的应用程序,我想 运行 对其进行一些测试。我正在使用 gradle 来管理依赖关系并构建任务和其他东西,所以我也想为此使用它。我需要启动服务器,然后 运行 我的单元测试对它发出一堆 HTTP 请求,然后理想情况下甚至在测试完成后关闭服务器。所以我尝试添加到我的 build.gradle test.dependsOn(jettyRunWar)
,(jettyRunWar 是 运行 的服务器),但我想这太简单了,因为 gradle test
从来没有 returns从 jettyRunWar 继续测试。我可以将其连接起来,以便 gradle 启动服务器然后 运行 进行测试吗?
是啊!雅必须添加
jettyRunWar {
daemon = true
}
给你的build.gradle。然后,如果你想在最后关闭服务器,你也必须加入这个:
stopPort = 1234
stopKey = 'stopKey'
// gradle is luser. Full story (and code copied from): https://issues.gradle.org/browse/GRADLE-2263
import org.gradle.api.plugins.jetty.internal.Monitor
[jettyRun, jettyRunWar]*.doLast {
/**
* THIS IS A WORKAROUND! THE CURRENT VERSION OF THIS TASK DOESN'T START A WATCHER IN DAEMON MODE
*
* If starting the monitor fails, it may be because the jetty task was updated to fix this issue
* When that happens, we shouldn't need the custom task any more
*
* Copied From: AbstractJettyRunTask
*/
if (getStopPort() != null && getStopPort() > 0 && getStopKey() != null) {
Monitor monitor = new Monitor(getStopPort(), getStopKey(), server.getProxiedObject());
monitor.start();
}
}
确保包含关于 "gradle is luser" 的评论。