1

GEB+Spock を使用した Grails での機能テストに関して、いくつか問題があります。「test-app」を実行すると常に失敗しますが、「test-app」の前に「test -app -integration」を実行すると動作します!

次のテスト シーケンスは、私の問題を示しています。

実行 #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: condition did not pass in 10.0 seconds」をスローしています。失敗しているテスト ケースは、データベース クエリからの結果を待っていることに注意してください。

だから私の質問は、機能テストが「test-app -integration」と「test-app」を介して実行される場合の違いは正確には何ですか?

私が考えていたものとの唯一の違いは、「test-app」がすべてのテスト段階 (ユニット、統合、機能) を実行していることです。

そして奇妙なことは、それが何らかの形で機能することですが、最初に「test-app -integration」を実行した場合のみです:/

次のセットアップを使用しています:

  • グレイル 2.0.1
  • ゲブ 0.7.0
  • スポック0.6
  • htmlunit-driver 2.0rc3 (2.20.0 で試してみましたが、さらに問題が発生しました)

誰かがこれについて私を助けてくれることを本当に望んでいます。Geb + spock は、機能する場合、優れたソリューションのように思えます...

よろしくトッベ

4

1 に答える 1

2

私はなんとかこの問題を解決し、興味があれば他の人のためにここに解決策を書いています. 解決策は、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>

私の Page オブジェクトでは、ボタンを次のように定義しました。

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

「test-app」では失敗しましたが、「test-app -integration」では失敗しませんでした。難しい/奇妙な問題に対する簡単な解決策は次のとおりです。

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

:)

乾杯/トッベ

于 2012-04-27T12:17:32.107 に答える