2009-10-16 7 views
13

私が作業しているプロジェクトのSWTとSwingの単体テストを探しています。私がEclipseから実行している限り、テストは正常に実行されます。ヘッドレス環境で単体テストのSWTとSwingアプリケーションに最も簡単な方法は?

ハドソン環境でそれらを実行するとすぐに、ハドソンはヘッドレスモードでテストを実行します。

これを行う最善の方法は何ですか?オープンソースのソリューションは、(プロジェクトはオープンソースなので)ご了承ください。

答えて

24

Xvfb(X仮想フレームバッファ、メモリ内のすべてのグラフィカル操作を実行するX11サーバー)を実行すると正常に動作します。

しかし、Xvnc用のHudsonのプラグインを使用する別の解決策があります。単純にプラグインをインストールして、ジョブ設定画面でチェックボックスをチェックしてください。

alt text http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

ハドソンは、自動的にXvncセッションを起動し、適切な値にDISPLAY環境変数を設定して、ときに、セッションをシャットダウンしますビルドは完了です。これがXvfbメソッドより優れている利点の1つは、複数のSwing/SWTプロジェクトを同時に構築する場合、各ビルドにはそれぞれ独自のXセッションがあることです。これはまったく問題ではないかもしれませんが、良いアイデアのようです。

このプラグインを使用する前に、明らかにXvncがインストールされている必要があります。あまり明白ではないが(賢明だが)、パスワードを設定する必要があるということもある。

$ vncpassword 

これは、Hudsonが実行する同じユーザーとして実行する必要があります。

+2

RedDeerテストフレームワークを試すことができ、これはneatestトリックであるI何年も前に見たよ! –

+0

+1私のために働く:-) –

0

SWTについてはわかりませんが、スイングではできません。可視に設定されていない場合でも、ウィンドウ(JFrame、JDialogなど)のインスタンス化は、ヘッドレスモード(JDK 5)で爆発します。私たちが行ったことは、ヘッドレスモードで実行されておらず、実際のウィンドウシステムが実際にインストールされていない状態でウィンドウを提供するためにXvfbをインストールしました。

2

スイングを使用することで、コンポーネントツリーが上部にウィンドウなしで作成できるように、物事を整理する傾向があります。これを行うことで単体テストでJPanelを作成し、これをトップレベルのコンポーネントとして使用することができます。フォーカスや、通常の動作のためのフレームの作成に関係するロジックなど、テストできないものがありますが、大多数をテストできます。

あなたはヘッドレスに行くかどうかの人生を容易にするためにFESTライブラリに見てみたいことがあります、それは非常によさそうだ:http://fest.easytesting.org/swing/wiki/pmwiki.php

関連する問題