如何使用 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" 的评论。