3

Eclipse アプリケーションをテストするために、次のように、特定のバンドルのサブフォルダーに格納されているテスト プロジェクトを検索して、実行時に利用可能なテスト ケースを動的に検出するテスト スイートを作成しました。

my.plugin
  src/      
  fixtures/ 
    p1/     
    p2/

各フィクスチャは、本格的な Eclipse プロジェクトです。実行時に、スイートはそれぞれのテストを検出p1して作成します。p2次に、各テストはセットアップ時にそのフィクスチャをワークスペースにインポートし、実際のテスト コードを実行してティアダウン時にフィクスチャを削除します。これまでのところ、これはうまく機能しています。別のフィクスチャをダンプして、新しいテストを追加するだけです。新しいテスト用にさらにコードを書く必要はありません。わーい!

私の問題は、これらすべてがデフォルトの設定でクリーンなワークスペースに対して実行されることです。フィクスチャの一部を有効にするために、特定の設定が必要な場合はどうすればよいですか? これらのカスタム設定をフィクスチャに提供し、それらがフィクスチャのテスト セットアップにロードされていることを確認し、分解時にデフォルトのワークベンチ設定を復元する必要があります。日食でこれを行う最良の方法は何ですか?

4

2 に答える 2

1

プロジェクト設定のみを使用する場合、解決策は簡単です。各プロジェクトに .settings フォルダーを作成し、適切なorg.foo.bundle.name.prefsファイルを設定するだけです。

ワークスペース設定が必要な場合は、さらに複雑になります。org.osgi.service.prefs.Preferencesおよびorg.eclipse.core.runtime.preferences.IScopeContextAPIを参照することをお勧めします。Eclipse は、設定を提供するために階層的なアプローチを使用します。デフォルト、ワークスペース、およびプロジェクトのスコープなど、スコープの階層を設定できます。各スコープには 1 つ以上のノードがあり、各ノードには一連のキーと値のペアがあります。

たとえば、一般的には、特定のプロジェクト内のソース レベルのコンパイラ プロパティなどの設定を検索します。これが通過する手順は次のとおりです。

  1. スコープ階層を作成します。通常、ルートはデフォルト、次にワークスペース、次にプロジェクトです。
  2. org.eclipse.jdt.core一番下のスコープからノードを取得します。
  3. キーに関連付けられた値をノードに要求します。
  4. このノードに値がある場合はそれを返し、そうでない場合は次のスコープからノードに移動します。
  5. どのスコープにもキーが含まれていない場合は、デフォルト値を返します。

内部 Eclipse API を使用せずにこの作業を簡単に行うための最善の策は、org.eclipse.ui.texteditor.ChainedPreferenceStoreインスタンスを使用することです。設定を取得したい IPreferenceStores のルックアップ階層を作成します。そのうちの 1 つは、プロジェクトに追加の設定を提供する、作成したカスタム IPreferenceStore になります。

もちろん、これらのカスタム設定を必要とするすべての場所で、カスタムの ChainedPreferenceStore を渡すことができるようにする必要があります。

于 2013-02-26T22:00:25.633 に答える
1

これが最善の解決策かどうかはわかりませんが、次のようにします。

テストをクリーンなワークスペースで実行するかどうかを (設定で) ユーザーが選択できるようにします。そうでない場合は、現在のものを使用して、ユーザーがそこに設定を適用できるようにします。テストの実行は通常、テスト対象の実際のプロジェクトと同じワークスペースで行われるため、これは合理的だと思います。

を呼び出すと、現在のワークスペースにアクセスできますResourcesPlugin.getWorkspace()

于 2013-02-26T10:23:56.370 に答える