【问题标题】:grails "test-app" fails for functional geb+spock test but "test-app -functional" is successfullgrails “test-app” 功能性 geb+spock 测试失败,但 “test-app -function” 成功
【发布时间】:2012-05-06 16:03:14
【问题描述】:

我在使用 GEB+Spock 在 Grails 中进行功能测试时遇到了一些问题。如果我运行“test-app”它总是失败,但如果我运行“test-app -integration”before“test-app”它可以工作!

以下测试序列说明了我的问题:

运行#1

grails> clean
grails> test-app -functional
...
Tests PASSED

运行 #2

grails> clean
grails> test-app
...
Tests FAILED

运行#3

grails> clean
grails> test-app -functional
...
Test PASSED
grails> test-app
...
Test PASSED

失败的测试抛出“geb.waiting.WaitTimeoutException:条件未在 10.0 秒内通过”。值得注意的是,失败的测试用例正在等待数据库查询的结果。

所以我的问题是,功能测试通过“test-app -integration”与“test-app”运行到底有什么区别?

与我认为的唯一区别是“test-app”正在运行所有测试阶段(单元、集成、功能)。

奇怪的是它确实有效,但前提是我先运行“test-app -integration”:/

我使用以下设置:

  • grails 2.0.1
  • geb 0.7.0
  • spock 0.6
  • htmlunit-driver 2.0rc3(我尝试使用 2.20.0 但给我带来了更多问题)

真的希望有人可以帮助我。 Geb+spock 似乎是一个不错的解决方案,它起作用...

问候 托比

【问题讨论】:

    标签: grails spock geb


    【解决方案1】:

    我设法解决了这个问题,并在此处为有兴趣的其他人编写了解决方案。使用geb报告功能找到了解决方案(好工具!)

    问题在于,我在功能测试所针对的应用程序中大量使用 grails ZKUI,并且 zkui 在不同的测试场景中生成了不同的 html 代码(是的,这真的很奇怪)。

    例如作曲家中的一个 zk 按钮:

    <z:button id="simpleSearchButton" class="simpleSearchButton"/>
    

    运行“test-app -integration”时会生成以下内容:

    <span id="cECQ4" class="simpleSearchButton z-button"><table id="cECQ4-box" style=""     cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="z-button-tl"/><td class="z-button-tm"/><td class="z-button-tr"/></tr><tr><td class="z-button-cl"><button type="button" id="cECQ4-btn" class="z-button"/></td><td class="z-button-cm"><img src="/certservice-admin/images/search.png;jsessionid=2ADDD6FA5F1D011A96E447435514BDA2" align="absmiddle"/></td><td class="z-button-cr"><div></div></td></tr><tr><td class="z-button-bl"/>td class="z-button-bm"/><td class="z-button-br"/></tr></tbody></table></span>
    

    但在运行“test-app”时,它会生成以下内容:

    <button type="button" id="l9AP4" class="simpleSearchButton z-button-os"><img src="/certservice-admin/images/search.png;jsessionid=835A2B8A3FE0C54341BB4F109A0CCC62" align="absmiddle"/></button>
    

    在我的页面对象中,我将按钮定义为:

    simpleSearchButton(required: false) { $("span.simpleSearchButton") }
    

    “test-app”失败但“test-app -integration”失败。解决困难/奇怪问题的简单方法是:

    simpleSearchButton(required: false) { $(".simpleSearchButton") }
    

    :)

    干杯 /托比

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多