2

次の問題があり、他の場所で答えを見つけることができませんでした:

https://github.com/joelittlejohn/embedmongo-maven-pluginを使用してmongo db サーバーを pre-integration-test フェーズで起動し、指定されたポートで mongo db と対話する統合テストを実行します。ただし、プラグインの元のバージョンでは、プラグイン構成でポートをハードコーディングする必要があり、同じマシンで実行されている他のプロセスと衝突し、同じポートを使用するモジュールの並列実行を効果的に拒否する可能性があります。

したがって、ランダム ポートで mongo db を起動できるパッチhttps://github.com/jumarko/embedmongo-maven-plugin/compare/jma-random-portを用意しました。ただし、統合テスト段階でフォークされた JVM で実行されている統合自体に、割り当てられたポート (統合前テスト段階でプラグインによって割り当てられた) を渡すことができません ( https://github.com/jumarko/embedmongo-を参照)。 maven-plugin/blob/3462a909b546eab6afe1f87691ac49336ddab845/src/test/java/com/github/joelittlejohn/embedmongo/MongoIT.java )。

割り当てられたポートをシステム プロパティ ( https://github.com/jumarko/embedmongo-maven-plugin/compare/jma-random-port#L1R201 ) に設定しようとしましたが、このプロパティはフォークされた JVM に伝達されません。回避策として、フェイルセーフ プラグイン構成 ( https://github.com/jumarko/embedmongo-maven-plugin/compare/jma-random-port#L0R104 ) でこのプロパティを設定しようとしましたが、効果はありませんでした。 (embedmongo-pluginが実際に設定する前に、適切な解決が行われると思います)。

実行時に (embedmongo-maven-plugin によって) 動的に設定されたシステム プロパティを、統合テストの実行に使用されるフォークされた JVM に伝達する方法はありますか? mongo dbが実行されているポートを統合テスト自体に渡す方法(おそらくより良い)の代替手段はありますか?

注: フェイルセーフ プラグインの forkMode が never に設定されている場合、統合テストはシステム プロパティにアクセスできますが、これは私にとってはオプションではありません。

4

1 に答える 1

0

プラグインでは、 AbstractMojo.projectフィールドを使用して、フェールセーフ プラグイン構成に伝播するプロジェクト プロパティを設定できます。

project.getProperties().put(propertyName,propertyValue);

私はこれとまったく同じことを作業プロジェクトで行い、それはあなたが望むことを行います.

したがって、実行した場合

project.getProperties().put("the.port", 1234) 

モジョでは、フェイルセーフ構成でプロパティ ${the.port} を使用できるようになります。

于 2013-10-01T13:02:40.730 に答える