私は満足のいく解決方法がわかりませんが、これらの回避策を検討することをお勧めします。
のEclipse-ExtensibleAPI
あなたはそれがフラグメントによってエクスポートされたパッケージは、ホストバンドルで再輸出されるようになり、この
Eclipse-ExtensibleAPI: true
ようEclipse-ExtensibleAPI
マニフェストヘッダを使用することができます。これで、目的のパッケージをインポートするテストバンドルを作成でき、フラグメント内のパブリックタイプにアクセスできるようになりました。
これは、パッケージプライベートタイプとメソッドにアクセスできるクラスローダーと同じクラスローダーを使用して、テストとプロダクションコードの恩恵を受けるテストフラグメントほど近いわけではありません。しかし、少なくとも公的にアクセス可能な方法でテストすることはできます。
ただし、このヘッダーはEclipse拡張であり、OSGi仕様の一部ではありません。したがって、EclipseのOSGi実装であるEquinoxに縛られています。さらに、フラグメントのパッケージはホストバンドルを通じてエクスポートされ、テストバンドルだけでなくすべてのバンドルにも表示されます。
のJavaライブラリ
あなたのフラグメントは、いくつかの依存関係を持っており、あなたがw.r.tテストプレーンJavaライブラリとして扱い検討することもできOSGiの/ Eclipseのランタイムを必要としない場合。別の兄弟Javaプロジェクトにはテストが含まれていて、フラグメントプロジェクトにはプロジェクト依存(のプロパティ> Javaビルドパス>プロジェクト)があります。パッケージプライベートメンバーへのアクセスは機能しません。
Maven/Tychoのようなビルドツールを使用する場合、依存関係を宣言しビルド中にこれらのテストを実行するには、いくつかの追加作業が必要になります。
Bndtools
また、この開発ツールは、Eclipse Plug-in Development Environment (PDE)より良いあなたのニーズに合うかどうかを確認するためにBndtoolsに見ることができます。
プレーンJUnitテストは、プロダクションコードと同じプロジェクトの別のソースフォルダに保持されます。これにより、テストフラグメントが使用されたのと同じ方法で、テストコードが本番コードにアクセスできるようになります。
Bndtoolsは、統合テストの実行もサポートしていますが、断片やコードによって提供されるAPI以外のコードにアクセスすることはできません。
CIビルドの場合、Bndtoolsプロジェクトでは通常、それぞれbnd
(http://bnd.bndtools.org/)プラグインを使用してMavenまたはGradleを使用します。 Maven/TychoがPDEプロジェクトを構築してパッケージ化するのと同じように。
BndtoolsはOSGiバンドルを開発するためのIDE拡張であるため、plugin.xml
で宣言された拡張機能などのEclipseプラグインの固有性については認識していません。したがって、これらの成果物の作成者および編集者はいません。しかし、あなたが運が良ければ、PDE Builderを使用して、無効な拡張機能や拡張機能のエラー・マーカーを表示することさえできます。
同じプロジェクトに製造コードとテストコードが含まれているというもう一つの欠点は、JUnitや模擬ライブラリなどの純粋なテストの依存関係も開発時に生産コードで見えるということです。
もちろん、生成された(フラグメント)バンドルには、テストコードもテスト依存も含まれていません。
しかし、Bndtools自体はBndtoolsで開発されています。したがって、Bndtoolsを使用してEclipseプラグインを記述できるという証拠があります。
私は知っていた2番目のオプションを避けようとしました。しかし、私は現在、私はそのヘッダを修正するためにホストプラグインにアクセスすることができないので、これを使用します。 Eclipse-ExtensibleAPIは素晴らしいことです。それについて知らなかった。ありがとうございました!チャンスがあれば、間違いなくそれに移行します。 – bdshadow
別の可能な解決策が私の頭に浮かんだ:Bndtools、編集された答えを見てください。あなたのケースではそれはあまりにも遠いかもしれませんが、私はそれにもかかわらず、完全性のためにそれを追加したいと思います。 –