2009-03-11 16 views
3

今のところ私は自動的にビルドし、耳のアーカイブをサーバーdir(すべてAntを使用して)にコピーするだけでJBossにデプロイされるWeb Javaプロジェクトを持っています。Java Webアプリケーションのビルド、デプロイ、テストを自動化するには?

私が必要とするのは、アプリケーションを自動的にデプロイするだけでなく、アプリケーションが正常にデプロイされているかどうかを確認し、HttpUnitテストを実行する方法です。

問題は、デプロイメントプロセスが自動的に監視されて、デプロイメントが完了した瞬間を待つようにして、その実行後にのみテストする方法です。だから、私はビルドし、展開し、 "ワンクリック"でテストを実行したい(私はCruise Controlを使っている)。

私はこの問題を解決するための提案を感謝します。

答えて

1

他のすべてのテストが派生するベーステストクラスを作成します。自動ユニットテストコレクターが実行しようとしないように、抽象クラスでなければなりません。そのクラスの

、セットアップするためのコードを追加する():

if (checkIsDeployed) { 
    ... run code to verify your app is ready for testing and wait until it is ... 
    checkIsDeployed = true; 
} 

checkIsDeployedは静的でなければなりません。

+0

デプロイメントの状態を確認する唯一の方法は、私のアプリケーションを「ping」することです。回答がない場合は、しばらく待ってからもう一度pingを実行します。 – andrey

+0

はい。コンテナにWebアプリケーションが準備されたイベントを送信させる方法はありません。実際には、コンテナはできるだけローディングを延期しようとするので、あなたはアプリが決して準備ができていません。だからこそ私はmockrunnerを使ってインラインですべてのテストを展開して実行しません。 –

+0

ツールはあなたのためにそれを行い、完了したらテストを実行することができます。貨物に関する私の答えを見てください。 –

0

hudson build engine:https://hudson.dev.java.net/を使用すると、特定の時刻にイベントを発生させることができます。

私はhudsonがユニットテストを実行するのに使用できることを知っています。自動配置はantを呼び出すことで実現できます。ここ

カール

6

必要がコンテナを起動すると、デプロイされたアプリケーションに応じて、テストを実行する前に、ビルドスクリプトからアプリケーションを展開することです。これは、統合テスト、エンドツーエンド/機能テスト、UIテストの一般的な必要性です。

問題は、コンテナの起動と「テストタスク/目標」を実行するだけでは不十分ではないということです。テストを実行する前にアプリケーションをデプロイするまで待つ必要がありますが、これには時間がかかります。状況が整うときにテストを実行できるようにするには、ビルドがコンテナを起動し、アプリケーションをブロックして展開する必要があります。

これは正確にはです。Cargoは約です。 Cargoは、コンテナを起動/停止してアプリケーションをデプロイするためのJava APIです。上記のロジックを提供し、Java、Ant、またはMavenから使用できます。

Mavenを使用している場合、ビルドライフサイクルにはすでに「統合テスト」段階があります。このフェーズは、通常、統合テストに使用され、「統合前テスト」および「統合後テスト」段階で包まれます。ここで、貨物のスタート/ストップの目標をプラグインします。 Antを使用している場合は、cargoのantタスクを使用できます。

mavenに基づく別のオプションは、Mavan Jetty Plugin Configuration Guideに記載されています。このアイデアは、貨物の代わりにjettyプラグインを使用して、「統合前のテスト」中に桟橋を起動し、「統合後のテスト」中に停止することを除いて、まったく同じです。

+0

Cargo 0.9には、Tomcatが実行されていてアプリケーションが正しく展開されているかどうかを確実に判断する上で問題があります。私は自分のスクリプトを使ってTomcatを殺したり、残ったもののwebappsディレクトリをきれいにしたりすることに戻りました。 –

+0

本当ですか?それは既知の問題ですか?これはもちろんバグかもしれませんが、カーゴとTomcatでこの問題に直面したことはありません。とにかく、バグは貨物の目標を変えないでしょう。 –

+0

残念ながら、Cargoは今のところantタスクよりもホットデプロイメントをサポートしていませんが、これが自分自身でこのサポートを追加する理由です。 – andrey

1

もう1つの方法はJBoss Server Ant Tasksです。

これらのタスクの素晴らしい点は、JBossが完全に起動するまでブロックされ、ポーリングが必要ないことです。また、JBossが必要なタイムアウトで起動できない場合にも失敗し、何らかのエラーが原因でJBossがシャットダウンできない場合はJBossをシャットダウンしようとします。私は、これらのタスクがJBossのテストスイートに使用されていると考えています。

私はまた、カーゴについて良いことを聞いたことがあります。ビルドスクリプトはJBoss固有のものではありません。 JBoss Cargoのプラグインは、私が知る限り、いくつかのJBossの人たちによって維持されていると思います。

関連する問題