2

統合テスト段階で Selenium システムのテスト ケースをいくつか実行しようとしています。Cargo に WAR をローカルの Jetty インストールにデプロイしてもらいたいです。次に、Spring 構成ファイルのテスト バージョンを使用して、テスト ケースを実行します。目標は、すべての外部依存関係をモックアウトし、HSQL をデータベースとして使用して、Web アプリケーションに対してテストを実行することです。

このアプローチは間違っていると思います。この段階で作成される WAR ファイルは「本番 WAR」であり、テスト リソースは含まれていないと思います。これを行う最善の方法は何ですか?「テスト」フェーズ中に WAR の「テスト バージョン」を構築する POM に新しいプロファイルを作成しますか? これを行う方法を示す例はありますか? 別のアプローチをとるべきですか?

4

1 に答える 1

0

私は別のアプローチを使用します。「テスト リソース」を使用したテストの問題は、実際のアプリケーションをテストしていないことです。特にSpringを使用している場合、リソースには重要な「コード」がたくさんある可能性があります。テスト用の特別な構成で「本番WAR」をテストします。すべての外部システム (データベース、外部 Web サービスなど) は (JNDI、外部構成ファイルなどを使用して) 構成可能である必要があり、WAR にハードコードされていてはなりません。

次の Maven 構成で作業を行う必要があります。

  1. exec-maven-pluginと exec:exec プラグインを使用して、HSQLDB を起動できます。
  2. データベースは、 sql-maven-pluginを使用して初期化できます (スキーマとテーブルの作成、データの挿入) 。
  3. その後、Cargo を使用して、Jetty インスタンスで WAR を開始できます。
  4. maven-failsafe-plugin を使用すると、Selenium を使用する JUnit テストを開始できます。

もちろん、他のすべての外部システムの模擬バージョンも開始する必要があります。

于 2013-06-08T07:36:14.997 に答える