16

現在、私は大学の最終学年プロジェクトの一環として、新しいバージョン管理システムに取り組んでいます。アイデアは、高度な適応性とプラグ可能性を実現することです。

OSGi フレームワーク (Equinox 実装) を使用してプラグインを管理しています。私の問題は、OSGi バンドルをテストするためのシンプルで使いやすい方法が見つからないことです。

現在、Maven を使用してバンドルをビルドし、テスト ハーネスを実行する必要があります。かなりの時間を節約できるので、Eclipse 用の JUnit テスト ランナーのようなものを探しています。

OSGi バンドルをすばやく簡単にテストする方法はありますか?

編集: Eclipse プラグインや GUI コンポーネントをテストするために必要なものはありません。OSGi バンドルだけです。

EDIT2: JUnit4 をサポートするフレームワークはありますか?

4

14 に答える 14

12

最近では、Pax Exam をご覧ください: http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

これは、テストに関連する OPS4J での現在の取り組みです。

于 2011-09-17T17:37:06.513 に答える
7

まだ言及されていないいくつかのツールを次に示します。

  • Maven を使用して Eclipse プラグインを構築するためのツールであるTychoを使用しています。独自のプラグインまたはプラグイン フラグメント内でテストを作成する場合、Tycho は、必要なすべての依存関係を使用して、独自の OSGi インスタンス内で各テスト セットを実行できます。 イントロ詳細情報。これは私にとって非常にうまく機能しています。

  • jUnit4OSGIは簡単に見えます。OSGiTestCase のサブクラスを作成し、getServiceReference()などのメソッドを取得します。

  • OSGi バンドル/Eclipse プラグイン用のヘッドレス ビルド システムであるPluginbuilderには、 Autotestsuiteと呼ばれるテスト実行フレームワークがあります。ビルドステップの後、OSGi 環境のコンテキストでテストを実行します。しかし、それは数年間維持されていないようです。多くの Eclipse プロジェクトが Pluginbuilder から Tycho に移行していると思います。

  • もう 1 つのオプションは、単体テスト内でOSGi コンテナーのインスタンスを開始することです。ここで説明されているように、これを直接実行します。

  • これは、JUnit (3) テストを検索して実行する小さなバンドル テスト コレクターを作成した人です。

于 2011-11-14T21:55:20.687 に答える
6

Spring Dynamic Modules には、 OSGi バンドルのテストに対する優れたサポートがあります。

于 2008-09-16T16:15:11.253 に答える
6

OPS4J (ops4j.org) にはPax Droneと呼ばれる専用のオープン ソース OSGi テスト フレームワークがあります。

Pax Drone ([ http://wiki.ops4j.org/confluence/x/KABo] ) を参照すると、テストですべての Felix バージョンと Equinox および Knopflerfish を使用できるようになります。

乾杯、 トニ

于 2008-09-30T09:33:04.077 に答える
3

Eclipse には、Eclipse (すなわち OSGi) アプリケーションのコンテキストで JUnit テストを実行するための起動構成タイプがあります。

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm

于 2008-09-21T20:44:59.650 に答える
1

私たちは同じ問題に遭遇し、独自のソリューションを作成したと思います。ソリューションにはさまざまな部分があります。

  • 特別なプロパティが定義されているすべての OSGi サービスをキャッチする junit4runner。これらのキャッチされたサービスを JUnit4 エンジンで実行します。JUnit アノテーションは、サービスが実装するインターフェースに配置する必要があります。
  • OSGi フレームワーク (カスタム フレームワークは Maven 依存関係として作成できます) を開始し、統合テスト Maven ライフサイクル内で単体テストを実行する Maven プラグイン。
  • デプロイヤ OSGi バンドル。これを OSGi コンテナーにドロップすると、シンプルな常時表示ウィンドウが開き、プロジェクト フォルダーをドロップできます (Total Commander または Eclipse から)。これにより、そのバンドルが再デプロイされます。

ツールを使用すると、TDD を実行でき、書かれたテストを常に Maven 統合フェーズ内でも実行できます。m2e および maven-bundle-plugin で eclipse を使用することをお勧めします。この場合、ソースにクラスを保存するとすぐに target/classes/META-INF/MANIFEST.MF が再生成されるため、プロジェクトをドラッグ アンド ドロップできます。展開ウィンドウに。開発する OSGi バンドルには、特別な機能 (Eclipse プラグインなど) は必要ありません。

全体のソリューションはオープンソースです。http://cookbook.everit.orgでチュートリアルを見つけることができます。

于 2012-10-14T20:40:04.600 に答える
1

GUI コンポーネントをテストする必要がある場合は、 SWTBotがその仕事を成し遂げることがわかりました。

于 2008-09-22T04:43:47.423 に答える
1

単体テストには、EasyMock フレームワークを使用するか、テストに必要なインターフェースの独自の実装を作成します。

于 2012-05-21T14:01:34.990 に答える
1

条約は、かなりアカデミックなコントラクト (テスト) フレームワークですが、いくつかの優れたアイデアがあります。それについて公開されている論文があり、現在それを改善しようとしている人々がいます。

于 2008-11-03T22:57:21.987 に答える
0

ここ数年、 Tycho (OSGi 用の新しい Maven ベースのビルド システム) が Eclipse Foundation の間で人気を博しています。このフレームワークには、Maven Surefire を使用して OSGi バンドルを個別のテストベッドでテストする方法も含まれています...

于 2012-10-09T17:58:19.600 に答える
-1

bnd-testing-maven-plugin はどうですか?

Felix や Equinox などの実行中のコンテナー内で JUnit を実行できます。Eclipse に BNDTools を使用した場合、これは非常に似ていますが、Eclipse を使用せず、UI を使用しないだけです。

https://github.com/bndtools/bnd/tree/master/maven/bnd-testing-maven-plugin

maven の effectiveosgi アーキタイプも参照してください。これにより、プロジェクトを構築したり、テストを追加したりするための良い出発点が得られます。

https://github.com/effectiveosgi

于 2018-08-08T20:04:31.883 に答える