私が取り組んでいるプロジェクトの SWT および Swing コードの単体テストを検討していますが、Eclipse から実行している限り、テストは正常に実行されます。
hudson 環境で実行するとすぐに、hudson がヘッドレス モードでテストを実行するため、失敗します。
これを行う最善の方法は何ですか?オープン ソース ソリューションのみを使用してください (プロジェクトはオープン ソースであるため)。
Xvfb (X 仮想フレームバッファ、メモリ内ですべてのグラフィカル操作を実行する X11 サーバー) を実行すると、これは正常に機能します。
しかし、Xvnc 用の Hudson のプラグインを使用した別の解決策があります。プラグインをインストールして、ジョブ設定画面でチェックボックスをオンにするだけです。
代替テキスト http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg
Hudson は自動的に Xvnc セッションを開始し、DISPLAY 環境変数を適切な値に設定し、ビルドが完了するとセッションをシャットダウンします。これが Xvfb 方式より優れている点の 1 つは、複数の Swing/SWT プロジェクトを同時にビルドしている場合、各ビルドに独自の X セッションがあることです。これはまったく問題ではないかもしれませんが、良い考えのようです。
このプラグインを使用する前に、明らかに Xvnc をインストールする必要があります。わかりにくいのは (理にかなっていますが)、パスワードも設定する必要があることです。これを行うには、次を実行します。
$ vncpassword
これは、Hudson が実行されているのと同じユーザーとして実行する必要があります。
Abbot Java GUI Testing FrameworkとSWTbotを試してください。少なくとも SWTbotはそれができるはずです。
どちらもヘッドレス モードを提供しない場合は、このブログ投稿で、テスト用に UI を取り除く方法についていくつかのアイデアが得られるかもしれません。
以前にここに投稿したことは確かですが、何が起こったのかわかりません。
Cacio では、Swing アプリをヘッドレスで実行できます。
http://rkennke.wordpress.com/2011/10/17/cacio-for-ui-testing/
Swing を使用して、上部に Window がなくてもコンポーネント ツリーを作成できるように整理する傾向があります。これにより、単体テストで JPanel を簡単に作成し、それを最上位コンポーネントとして使用できます。通常操作用のフレームの作成に関連するフォーカスやロジックなど、テストできないものもありますが、大部分はテストできます。
ヘッドレスにするかどうかにかかわらず、FEST ライブラリを調べて生活を楽にすることをお勧めします。
SWT についてはわかりませんが、Swing ではできません。ウィンドウ (JFrame、JDialog など) のインスタンス化は、可視に設定されていない場合でも、ヘッドレス モード (JDK 5) で失敗します。実際にウィンドウ システムをインストールせずに、ヘッドレス モードで実行したり、Xvfbをインストールしてウィンドウを提供したりしませんでした。
RedDeerテスト フレームワーク https://github.com/jboss-reddeer/reddeerを試すことができます
• Jenkins CI 環境 (Hudson など) でのテスト実行のサポート