Skip to content
kompiro edited this page Apr 25, 2013 · 3 revisions

開発ガイド(TBD)

このページでは、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でできること

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という環境

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

を実行してください。