2012-03-28 6 views
0

テストプラグイン/プロジェクトで私のDSLに書かれたいくつかのテストファイルがあります。ほとんどのテストでは、インラインの複数行の文字列とXtendを使用していますが、4つのケースでは、URLとクラスパスでいくつかの魔法を実行するコードをテストする必要があります。テストプラグインでコード生成を無効にするにはどうすればよいですか?

リソースの読み込みは、拡張子が正しい場合にのみ機能するため、ファイルに偽の拡張子を付けることはできません。

私の問題:私のDSLにはコードジェネレータもあります。これは最終的には、最終的に私はそれらを持つことができない場所にいくつかの生成されたファイルを作成することになります(例えば、コンパイルせず、情報が複数のファイルに分割されているときにエラー処理をテストするエラー)。

テストプロジェクトはXtendをこれらのファイルに使用するため、Xtextの性質を無効にできません。コード生成が必要です。

ジェネレータはEclipse内で実行されるため(私は他のプロジェクト用にインストールされたDSLプラグインを使用しています)、Guiceのコードジェネレータをオーバーライドする方法はありません。

この場合、コードジェネレータを無効にするにはどうすればよいですか?

+0

あなたのセットアップは非常に複雑であり、そしてそれはあなたが本当に達成しようとしているのかを理解するために少し難しい...で書かれたこれらの「テスト・ファイルである2つの拡張ポイントです私のDSLの実際のJUnitテスト、またはテストに使用するデータが含まれていますか?単体テストや統合テストをしようとしているテストですか?システムのどの部分をテストしていますか - コード生成部分、または最初に生成する必要があるもの?リソースを嘲笑したり、残りのファイルと一緒に適切なテストコードを生成できないのはなぜですか? – weltraumpirat

+0

私のテストファイルは、テストで使用されるデータです。この場合、彼らがUTかITのどちらであるかはわかりません - それは重要ですか?私は自分のコードジェネレータ、XtextのCG作品をテストしています。私はなぜリソースを嘲笑することができないのかを説明しました。彼らはクラスパスにいなければなりません。私は、bin/folderにリソースをコピーするためのテストケースを変更することを検討していますが、それが最善のアプローチかどうか疑問に思っていました。 –

+0

統合テストの全体のポイントは、すべての部分が一緒に収まるかどうかを確認することであるのに対し、...ではUTとITの間の差は、ユニットテストでは、私はいつも*すべて*の依存関係を模擬する方法を見つけるためにしようとするだろうということでしょうあなたのケースでは、まずユニットテストをして、あなたのテストカバレッジに盲点が残っているかどうかを確認します。クラスパスの詳細はどこから取得しますか?ジェネレータがそれらにアクセスするための呼び出しがなければならないので、あなたが嘲笑すべき依存関係(つまり、偽のクラスパスエントリを返し、それらに対する魔法を検証する)が必要です。 – weltraumpirat

答えて

1

これを達成するための簡単な方法があります:

  1. 開き、プロジェクトのプロパティ
  2. あなたのDSLのエントリを展開して選択し、「コンパイラ」
  3. プロジェクト固有の設定を有効にする」を選択します"
  4. "一般 "の下にある"コンパイラが有効になっています "を無効/選択解除します

あなたのDSLのプロパティのエントリを持っていない場合:

  1. あなた.mwe2ワークフローファイルにこのフラグメントを追加します。

    fragment = generator.GeneratorFragment {} 
    
  2. は、新しいコードをマージし、プロジェクトを再生成ベースプラグインとUIプラグインの両方でplugin.xml_genからplugin.xmlに変更します。

興味深い部分はorg.eclipse.ui.preferencePagesorg.eclipse.ui.propertyPages

+0

最初から作成されたプロジェクトにはすでにこれらの設定がすべて適用されているため、mwe2ファイルを編集する必要はありません。 –

関連する問題