unit-testing - 在没有启动嵌入式 tomcat 的情况下运行 grails 功能测试

标签 unit-testing tomcat grails testing run-app

我有一个项目,我通常使用 grails run-app 命令调试/运行该项目。我想运行一个测试,但不想让服务器仅为特定测试再次运行。

我通常在后台一直以 Debug模式运行服务器。

我试过使用 iteli-j 中的运行配置,最近的尝试是 grails test-app functional: className

最佳答案

在 Grails 2.4.4 中,如果您覆盖 baseUrl,您可以针对 localhost 以外的服务器运行测试。例如,我们有一个预生产服务器托管在 AWS 上,我们在部署后从 Jenkins 对其运行一部分功能测试,作为冒烟测试。

grails -plain-output test-app -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:

可以,但是 test-app 仍然会启动嵌入式 tomcat 服务器。但是,经过一些挖掘,我发现覆盖服务器主机以指向正在运行的实例将导致测试在不启动嵌入式 tomcat 的情况下运行。有几种方法可以实现这一点:

在命令行上传递值:

grails -plain-output test-app -Dgrails.server.host=foo.bar.org -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:

或者,为特定环境覆盖 Config.groovy 中的值也应该有效:

...
preProd {
    ...
    grails.server.host = 'foo.bar.org'
    ...
}
...

它没有记录在 test-app 下,但在 run-app 下提到了它事实证明它也适用于 test-app。

这是有效的,因为 Grails 确定嵌入式服务器是否应该通过尝试打开到服务器主机/端口的连接来启动,如果成功则跳过启动。

通过反复试验,我发现当我同时指定 grails.server.host-baseUrl 时我会得到最好的结果,即使基本 url 变成了冗余信息.可能这是因为我的案例涉及 ssl 连接,但我尝试使用 -https 而不是 -baseUrl=... 运行并且测试只是挂起。

关于unit-testing - 在没有启动嵌入式 tomcat 的情况下运行 grails 功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464493/

相关文章:

python - 单元测试 lambda 脚本

unit-testing - 从多阶段Docker构建(.NET Core 2.0)中提取单元测试结果

java.lang.VerifyError : Expecting a stackmap frame at branch target 错误

负载平衡 tomcat 中的 Hibernate 自动增量?

hibernate - grails/hibernate标准如何获取至少有一个 child 满足条件的所有行

c# - 用于生成对象初始化代码的调试器可视化器

c# - 使用 NSubstitute 的单元测试无效方法

java - HTTP 状态 500 - 处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError :

java - Grails 中日期格式的错误输出

grails - 保存在我的域类对象上不起作用。