質問
現在、私は大学の最終年度プロジェクトの一環として、新しいバージョン管理システムに取り組んでいます。アイデアは、適応性とプラグイン性を高めることです。
プラグインの管理には OSGi フレームワーク (Equinox 実装) を使用しています。私の問題は、OSGi バンドルをテストするためのシンプルで使いやすい方法が見つからないことです。
現在、Maven を使用してバンドルを構築し、テスト ハーネスを実行する必要があります。時間を大幅に節約できるため、Eclipse の JUnit テスト ランナーのようなものを探しています。
OSGi バンドルをテストする迅速かつ簡単な方法はありますか?
編集:Eclipse プラグインや GUI コンポーネントをテストするためのものは必要なく、OSGi バンドルだけが必要です。
編集2:JUnit4をサポートするフレームワークはありますか?
解決
Spring Dynamic Modules は以下の優れたサポートを備えています。 OSGi バンドルのテスト.
他のヒント
最近では、Pax Exam をご覧ください。http://team.ops4j.org/wiki/display/paxexam/Pax+Exam
これは、OPS4J でのテストに関する現在の取り組みです。
OPS4J (ops4j.org) には、専用のオープンソース OSGi テスト フレームワークがあります。 パックス・ドローン.
Pax Drone ([http://wiki.ops4j.org/confluence/x/KABo]) これにより、テストですべての Felix バージョンと Equinox および Knopflerfish を使用できるようになります。
乾杯、トニ
まだ言及されていないツールをいくつか紹介します。
使っています ティコ, 、Maven を使用して Eclipse プラグインを構築するためのツールです。独自のプラグインまたはプラグイン フラグメント内にテストを作成すると、Tycho は、必要な依存関係をすべて備えた独自の OSGi インスタンス内で各テスト セットを実行できます。 イントロ そして さらに詳しい情報. 。これは私にとっては非常にうまく機能しています。
jUnit4OSGI 素直に見える。OSGiTestCase のサブクラスを作成すると、次のようなメソッドが得られます。
getServiceReference()
, 、など。プラグインビルダー, は、OSGi バンドル/Eclipse プラグイン用のヘッドレス ビルド システムです。 テスト実行フレームワーク 呼ばれた オートテストスイート. 。ビルドステップの後に、OSGi 環境のコンテキストでテストが実行されます。しかし、ここ数年はメンテナンスされていなかったようです。多くの Eclipse プロジェクトが Pluginbuilder から Tycho に移行していると思います。
別のオプションは、のインスタンスを開始することです。 OSGiコンテナ 内で あなたの単体テスト, 説明したように、これを直接実行します ここ.
ここに書いた人がいます 小さな バンドルテストコレクター, 、JUnit (3) テストを検索して実行します。
Eclipse には、Eclipse のコンテキストで JUnit テストを実行するための起動構成タイプがあります (つまり、OSGi) アプリケーション:
私が見つけた GUI コンポーネントをテストする必要がある場合 SWTボット 仕事を終わらせます。
条約 は非常に学術的ですが、いくつかの素晴らしいアイデアを備えた契約 (テスト) フレームワークです。それに関する論文が出版されており、現在その改良に取り組んでいる人々がいます。
の ProSyst テスト実行環境 は、OSGi バンドルの便利なテスト ツールです。また、可能なテスト モデルの 1 つとして JUnit テストもサポートされています。
単体テストの場合は、EasyMock フレームワークを使用するか、テストに必要なインターフェイスの独自の実装を作成します。
私たちも同じ問題に遭遇し、独自の解決策を作成したと思います。ソリューションにはさまざまな部分があります。
- 特別なプロパティが定義されているすべての OSGi サービスをキャッチする junit4runner。これらのキャッチされたサービスは JUnit4 エンジンで実行されます。JUnit アノテーションは、サービスが実装するインターフェイスに配置する必要があります。
- OSGi フレームワーク (カスタム フレームワークは Maven 依存関係として作成できます) を開始し、統合テスト Maven ライフサイクル内で単体テストを実行する Maven プラグイン。
- デプロイヤ OSGi バンドル。これを OSGi コンテナにドロップすると、シンプルな常に最前面に表示されるウィンドウが開き、そこにプロジェクト フォルダーを (トータル コマンダーまたは Eclipse から) ドロップできます。これにより、そのバンドルが再デプロイされます。
このツールを使用すると、TDD を実行し、書かれたテストを常に Maven 統合フェーズ内で実行することもできます。Eclipse を m2e および maven-bundle-plugin とともに使用することをお勧めします。この場合、ソースにクラスを保存するとすぐに target/classes/META-INF/MANIFEST.MF が再生成されるため、プロジェクトをドラッグ アンド ドロップできます。デプロイヤーウィンドウに移動します。開発する OSGi バンドルには、特別な機能 (Eclipse プラグインなど) が必要ありません。
ソリューション全体はオープンソースです。チュートリアルは次の場所にあります。 http://cookbook.everit.org
ここ数年の間に ティコ - OSGi 用の新しい Maven ベースのビルド システム - は、Eclipse Foundation の間でかなり人気になっています。このフレームワークには、Maven Surefire を使用して別のテストベッドで OSGi バンドルをテストする方法も含まれています。
bnd-testing-maven-plugin はどうでしょうか?
Felix や Equinox などの実行中のコンテナ内で JUnit を実行できるようになります。Eclipse の BNDTools を使用した場合、これは非常に似ていますが、Eclipse と UI を持たない単なる Maven です。
https://github.com/bndtools/bnd/tree/master/maven/bnd-testing-maven-plugin
Maven のEffectiveosgi アーキタイプも見てください。これは、プロジェクトを構築するか、単にテストを追加するための良い出発点となります。