あなたは正確にあなたのapplication.properties
からプロパティとして名前のシステムプロパティとして、データベース接続パラメータをエクスポートすることができます。 Springブートが外部化された設定を処理する方法のおかげで、それらの値はSpring設定のプロパティ(または使用するYAML)ファイルの値よりも優先され、非Springテストでシステムプロパティを使うだけです。
私はそれらのDBがあまりにも春スイートの一部を、テストすることを示唆しているが - あなたが実際にあなたが単一のテストを実行したときにのみ速度を得ます。異なる@ActiveProfiles
アノテーションを使用する@DirtiesContext
テストまたはテストがない限り、Springはアプリケーションコンテキストをキャッシュし、テストスイート全体で1回しか初期化しません。ここで
だthe official documentationからの引用:
ザ・春TestContextフレームワークには、一貫性のある春ApplicationContextsとWebApplicationContextsのロードだけでなく、これらのコンテキストのキャッシングを提供します。 Springのオーバーヘッドではなく、Springコンテナによってインスタンス化されたオブジェクトがインスタンス化するのに時間がかかるため、起動時間が問題になる可能性があるため、ロードされたコンテキストのキャッシュをサポートすることが重要です。たとえば、Hibernateマッピングファイルが50〜100個あるプロジェクトでは、マッピングファイルをロードするのに10〜20秒かかり、各テストフィクスチャで各テストを実行する前にそのコストがかかり、開発者の生産性を低下させるテスト全体が遅くなります。デフォルトで
は、一度ロードされ、構成ApplicationContextの各試験のために再利用されます。したがって、セットアップコストはテストスイートごとに1回だけ発生し、その後のテスト実行ははるかに高速です。このコンテキストでは、テストスイートという用語は、同じJVMで実行されるすべてのテストを意味します。たとえば、特定のプロジェクトまたはモジュールのAnt、Maven、またはGradleビルドから実行されるすべてのテスト。
システムのプロパティは醜いですが、私は認めている、彼らは仕事を行う。私はあなたの答えを受け入れる前にいくつかの「侵略的ではない」解決策を待つでしょう。テストを春に移行することは選択肢ではありません。毎回〜200msと5秒です。それはTDDの大きな違いです – piotrek
合意しましたが、私はより簡単な方法を見ていません。私自身はいつも[環境を準備したアプリケーションのリスナーを追加する方法](http://stackoverflow.com/a/38985183/4657798)を好みましたが、それはあなたのユースケースにとって少し重いです。あなたのケースでは、リスナーに渡す設定を保持するための静的なMapフィールドをどこかに持たなければならないので、システムプロパティはまだ侵略的ではない方法だと思います –