3

Selenium 経由で Liferay 6.0.6 のポートレットをテストしようとしています。liferay mvc ポートレットと vaadin ポートレットはほとんどありません。最初のアプローチでは、以下の手順を実行するテストを作成します。

  1. 基本構造とポートレットの配置を使用してデータベース ダンプを復元する
  2. 「data」フォルダを削除し、そこに初期データをコピー
  3. 「webapps」フォルダからポートレットの適切なフォルダを削除します
  4. ポートレット (*.war) を「デプロイ」フォルダーにコピーします
  5. ライフレイを開始
  6. ポートレットがインストールされるまで待ちます
  7. [コントロール パネル] -> [サーバー管理] に移動し、[この VM によってキャッシュされたコンテンツをクリアする]、[データベース キャッシュをクリアする]、[すべての検索インデックスを再インデックス化する] をクリックします。

Selenium テストを開始した後 (ポートレットの動作のテスト、vaadin ポートレットを介したファイルのアップロード、vaadin ポートレットを介したワークフロー (kaleo) タスクの承認など)。そして、テストはさまざまな場所で失敗しました:

  1. ポートレット経由でファイルをアップロードしているときに DuplicateFileException が発生することがあります (ただし、ドキュメント マネージャーにはファイルがありません)。
  2. Selenium がページ上の要素を見つけられない場合がある
  3. kaleo ワークフローがエラーなしですべてのファイルを承認できない場合がある

VM 上の Jenkins ノードでテストを開始すると、より不安定な動作が発生します。

ポートレットをどのようにテストしますか? テストの動作を安定させる方法はありますか? ベストプラクティスとは何ですか?

4

1 に答える 1

2

ポートレット経由でファイルをアップロードしているときに DuplicateFileException が発生することがあります (ただし、ドキュメント マネージャーにはファイルがありません)。

完全なスタックトレースを見ると非常に便利です

Selenium がページ上の要素を見つけられない場合があります。

考えられる理由/解決策は 2 つあります。

  1. ポートレットが ajax を使用してコンテンツをロードしている場合、コンテンツがロードされるまでテストを待機する必要があります。

    waitForElementPresent(locator)

  2. Vaadin TestBench を使用しない場合は、vaadin 要素に debugId を設定してください。

    setDebugID("aButton");

ポートレットをどのようにテストしますか?

セレンとキュウリを使用しました。https ://projects.savoirfairelinux.com/projects/ctr-liferay/wiki/Portal__Testing を参照してください。

于 2013-05-13T19:55:31.667 に答える