次の問題があり、他の場所で答えを見つけることができませんでした:
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 に設定されている場合、統合テストはシステム プロパティにアクセスできますが、これは私にとってはオプションではありません。