DevelopmentGuide
このページでは、Quick JUnitの開発方法について解説します。 拡張ポイントによる拡張など、一般的なEclipseプラグインの開発方法は、ヘルプや書籍を参考にしてください。
Quick JUnitはEclipseのPDE上で開発します。Eclipseのサイトから、PDEを同梱するEclipse ClassicもしくEclipse for RCP and RAP Developersをダウンロードしてください。 PDEとはPlugin Development Environmentの略語です。Eclipseのプラグインは主にこの環境を用いて開発を行います。
また、開発に利用しているプラグインをひと通りインストールしたOneInstall Agent用のoneinstallファイルを用意しました。是非活用してください。
PDEでできることを簡単に解説します。
- plugin.xml等のエディタが付属する。
- バージョンの異なるEclipseをターゲットとして切り替えられる。junit.extensions.eclipse.quick.builder-feature プロジェクトにある、quick_junit_3_7.targetなどは、開発対象のEclipseのバージョンを指定しておくためのファイル。Target Editorで開き、右上のSet as Target Platformをクリックすると、実行ターゲットのEclipseになる。
- 指定したプラグイン、もしくはフィーチャをベースに、新しくEclipseを起動する。
Eclipse PluginはEclipseという実行環境で動作します。Eclipseという環境は、通常のJavaのアプリケーション環境と異なります。Eclipseは、OSGiコンテナを起動し、その上でPluginをBundleとして読み込み、動作します。OSGiコンテナ上で起動したBundleは、それぞれ独自のクラスローダーを持ち、それぞれのクラスローダーを使って依存関係が管理されます。この構造が原因でライブラリの読み込みに失敗し、NoClassDefFoundErrorや、ClassNotFoundExceptionが発生したりすることがあります。また、開発中のプラグインがビルドされ、実際のEclipseに組み込んでうまく動作しない事があります。これらの例外が発生した場合、依存関係の解決に失敗している事が多いです。
Quick JUnitプロジェクトで開発しているプラグインプロジェクトは、下記の分類の下にそれぞれ配置されています。
quick-junit
|-stable - 安定しているプロジェクト
|-experimental - 実験プロジェクト
|-library - ライブラリ
|-repository - リポジトリ作成プロジェクト
それぞれのディレクトリの下には、さらに機能毎にまとめられています。プロジェクトのインポート時にquick-junitディレクトリを選択すると、全てのプロジェクトをインポートできます。
Quick JUnitはPluginとFeature、Test Pluginを別々のプロジェクトにしています。それぞれどんなプロジェクトかまとめます。
- Pluginとは、プラグインのプロダクションコードを実装するプロジェクトです。Quick JUnitプロジェクトでは、"junit.extensions.eclipse.quick."という命名規則があります。PluginはOSGiでいうBundleです。Pluginの起動時に初期化処理を実装するなどは、OSGiの状態について学んでください。
- Featureとは、いくつかのPluginをまとめたEclipseの配布パッケージです。そのため、このプロジェクトには、実装はありません。ブランディング用のアイコンなどを配置します。Quick JUnitプロジェクトでは、命名規則として".feature"という名前がついています。Eclipse Marketplaceや更新サイトなどからダウンロードするにはこの形式のプロジェクトを作成し、Pluginを追加します。
- Test Pluginとは、プラグイン用のテストコードを実装するプロジェクトです。Quick JUnitプロジェクトでは、命名規則として".test"という名前がついています。EclipseはEquinoxというOSGiコンテナ上で実行されます。OSGiコンテナ上では、クラスローダーがそれぞれのプラグイン毎に用意されるなど、通常のアプリ環境とは異なります。そこで、このコンテナ上でプラグインのテストを行うため、別のプロジェクトにしておきます。Test PluginはベースのPluginに対して、機能を追加するfragmentという形式で作成します。
Quick JUnitのビルドにはMavenを利用しています。ビルドにはMaven3が必要です。http://maven.apache.org/download.cgi から最新版をダウンロードしてください。
$ git clone https://github.com/kompiro/quick-junit.git
$ cd quick-junit
$ mvn package
とすると、各プロジェクトのビルドが行われ、repository/targetの下にrepository-VERSION.zipが作成されます。
- Eclipse APIレイヤーは、APIの動作を学ぶための学習テストを書いておく。
- Quick JUnit開発者が書くテストでEclipse APIを使う場合は、上記学習テストで学んだAPIの振る舞いをMock化しておく。これは、Eclipseのランタイム環境ではない環境でユニットテストを動かした時、書いた意図どおり動く事を確認するためです。
- Quick JUnitプロジェクトにはCI環境が用意されています。http://build.kompiro.org/ このテスト実行は、Eclipseランタイム環境上で行われます。たまには結果を確認してください。
全プロジェクトのテストを行うには
$ mvn integration-test
を実行してください。