6

Java-EEWebアプリケーションの一連の受け入れテストを作成する方法を決定しようとしています。

セットアップは次のとおりです。Mavenを使用してWARファイルを生成し、Glassfishにデプロイします。デプロイメント時に、MySQLデータベーススキーマはHibernate( "hbm2ddl = auto"オプション)を使用してモデルクラスから自動的に更新されます。

Acceptance Testsは、さまざまなメソッドを呼び出して、結果が期待どおりであることを確認することにより、デプロイされたコードをテストする必要があります(*)。既存のシステムにフックする追加のパッケージセットを作成したので、受け入れテストでは、これらを既存のコードベースに統合する方法を示す必要があります。

(*)これはユニット/統合テストのように聞こえるかもしれませんが、データベースが存在するように、私たちが行ったことを証明する必要があり、展開後に実行する必要があるという意味で、受け入れテストです。

上記から、私の現在の考えは、JUnitを使用して期待値などをチェックすることです。私が苦労しているのは、デプロイ後にこれらのテストを呼び出す方法です。「デプロイ」はMavenの最後のフェーズなので、これが可能かどうかわかりませんか?

4

2 に答える 2

6

そのフェーズが呼び出されたからとdeployいって、テスト用のアプリケーションをデプロイするためにそれを使用する必要があるという意味ではありません。実際、アーティファクトをMavenリポジトリに「デプロイ」するためにのみ使用する必要があります。Mavenライフサイクルフェーズの説明を読むと、ユースケース専用のフェーズがいくつかあることがわかります。

pre-integration-test
integration-test
post-integration-test  

CargoMavenプラグインをご覧ください。テストのために、WARファイルをさまざまなコンテナーにデプロイするように作られています。彼らは間違いなくあなたがあなたのサイトで説明するようなユースケースのデモを示しています。最終的には、Cargoを使用してコンテナにデプロイできると思います(統合前テストなどの初期のフェーズの1つから)

Jenkinsには、Cargoプラグインのラッパーであるプラグインもあります。したがって、Jenkinsを介して必要なことを行うことができます。また、mvncleandeployとしてJenkinsビルドジョブを実行する必要がないことにも注意してください。統合テストを実行するだけのビルドジョブを1つ作成し、成功した場合にのみ別の「デプロイ」ジョブを実行することができます。

于 2013-01-14T16:10:40.947 に答える
5

デプロイ後に本当に何かを行う必要がある場合は、デプロイフェーズの一部としてフェイルセーフを実行するか、JUnitを暗示的に実行することができます。

別のモジュールがある場合、私が通常行うこと。したがって、プロジェクトと別の「デプロイメントテスト」プロジェクトを含む1つのMavenプロジェクトを持つことができます。次に、親プロジェクトをビルドすると、戦争がビルドされて実行され、展開テストが実行されます。通常どおりjunitを使用できます。

2つ目は、プロジェクトが1つでもあるため、jenkinsに適しています。

于 2013-01-14T13:04:45.300 に答える