繁体   English   中英

如何获取正在运行Grails 3.1.9集成测试的Url?

[英]How to get the Url where Grails 3.1.9 integration tests are running?

从Grails 3.1.9发行说明:

集成测试端口集成和功能测试现在默认在随机端口上运行,而不是在与应用程序相同的端口上运行。 当应用程序已经在运行时,这是为了避免端口冲突问题。 需要更改硬编码端口的集成测试,才能使用标有@Integration的测试的serverPort属性

我通常使用以下方法获取集成测试网址

import grails.util.Holders ... .. . def urlWhereIntegrationAppIsRunning = Holders.grailsApplication.config.grails.serverURL

然后在我的application.yml我有类似以下内容:

test: server: port: 8090 grails: serverURL: http://localhost:8090

如何在集成测试中使用Grails 3.19运行集成测试的Url(服务器URL和随机端口)?

根据Marco的回答,我完成了一个Trait来封装运行集成测试的URL。 我在测试我的API的Spock规范中实现了此特征。

import org.springframework.beans.factory.annotation.Value

trait TIntegrationServerUrl {

    @Value('${local.server.port}')
    Integer serverPort

    String integrationServerUrl() {
        "http://localhost:$serverPort"
    }
}

您可以在集成测试中使用以下内容。

@Value('${local.server.port}')
Integer port

这将为您提供测试中的端口

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM