2012-04-20 12 views
3

私はGWT + SmartGWTアプリケーションのクライアント側でユニットテストを行っています。GWT + SmartGWTの単体テスト方法は?

最初に、GwtTestCaseでテストしました。巨大なアプリケーションを単体テストするには長すぎます。 GwtTestSuiteは役に立ちません。それでも実行には時間がかかります。 (さらに、テスト時にブラウザを起動するように頼んだ)

次にgwt-test-utils:素晴らしいフレームワーク。悲しいことに、私のjavassistバージョンは3.5で、少なくとも3.11が必要です。 JavassistはGileadによって使用されているので、私はこれに触れることはできません。だから、gwt-test-utilsはありません。

私が見たセレニウム。それは素晴らしいです。 htmlunitドライバを使うと、速くて便利です。 Webアプリケーションをテストする最も簡単な方法。ここでの問題は、Webページを生成するときにSmartGWTが独自のIDを生成することです。だから私はTextItemsを取得し、それらのIDは常に変化しているので、それらを埋めることができません。ウィジェットの初期化の前にsetID()を使用して解決できることがわかりました。しかし、これはscLocatorのIDであり、HTML IDではありません。 SeleniumはscLocatorで動作したくありません。

=> SeleniumでscLocatorを受け入れる簡単な方法はありますか? (私がシンプルだと言うと、単純でなければなりません...私はJavaの専門家ではありません...)

誰かがアプリケーションの単体テストに助けてくれますか?それはJavaでコード化されているので、巨大で、コードの約70%(25k行のコード)をカバーする必要があります。

さらに仕様: Mavenを使用してコンパイルします。 私はサーバー側に触れていません。 テストはGwtTestCaseとスイートよりも高速である必要があります:私は私の問題がクリアされている願っています/

、私は私が行うことの過ちのために英語のネイティブとても残念じゃない:X

+0

コメントのみ - gwt-test-utilsは、JSNIコードの代わりにJavascriptを作成する必要があるため、SmartGWTでは使用できません。 SmartGWTは主にSmartClientを包むラッパーであるため、これは大きな努力になります。 –

+0

はい私はプロジェクトの保守担当者の1人に連絡しました。彼はそれは決してうまくいかないと私に言った:/ だから私はセレンで戻ってきた。 – Depado

+0

私はSeleniumを使ってunit testing smartGWTアプリケーションに関するブログを作った。あなたが興味を持っているかどうか見てください^^ http://noobdevelopper.tumblr.com/ – Depado

答えて

0

< defaultUserExtensionsEnabled>真</defaultUserExtensionsEnabled>
< userExtensions>あり</userExtensions>

[ユーザーextensions.jsへのパス]私達は行きます。私はそれを機能させることができた。 (<設定>タグのselenium-maven-plugin)

ありがとうございます。

+1

答えにいくつかの文脈を教えてください。あなたの最初に提案されたアプローチのどれに適用されますか? –

0

が、私はそれができることを見出しましたウィジェットの の初期化の前にsetID()を使用して解決しました。しかし、これはscLocatorのIDであり、 はHTML IDではありません。

は、なぜあなたはしないでください:

widget.ensureDebugId("some-id"); 

ensureDebugId()用のJavaドキュメントから:

をこのUIObjectクラスのための主な要素は、IDプロパティが設定されていることを確認してください、 これはサードパーティのライブラリとテストツールとの統合を可能にします

+0

私はそれを試してみましょう、あなたの迅速な答えのために多くの感謝! ^^ – Depado

+0

まだ動作しません。それが内部IDだと思われます。 setID()はscLocatorを埋め、ensureDebugID()は内部参照のようです。私は本当にこのx__xをどうやってやるのか分からない – Depado

+0

あなたは正しくありません。 ensureDebugId()は、HTML要素のIDを設定します。後にいくつかの外部コードがそれを変更している場合を除きます。 – Renato

1

トップレベルの "selenium"ディレクトリの下で、SDKでSelenium拡張機能とそのユーザーガイドを提供しています。

3.1d(smartclient.com/buildsから)をダウンロードした場合は、さらにJUnitのサンプルを含むドキュメントがあります。

ensureDebugId()を使用しないでください(効果はまったくありません)。 DOM IDを使って作業しないでください(動作しません)。

セレンユーザーガイドのベストプラクティス情報では、setID()を使用する必要があるときについて説明しています。

関連する問題