[解決済み] SpringアプリケーションのコンテキストをJunitのテストクラスで再利用する
質問
JUnitのテストケース(統合テスト)の束があり、それらは論理的に異なるテストクラスにグループ化されています。
Springアプリケーションのコンテキストをテストクラスごとに一度ロードし、JUnitテストクラス内のすべてのテストケースでそれを再利用することができます。 http://static.springsource.org/spring/docs/current/spring-framework-reference/html/testing.html
しかし、私たちはちょうど、たくさんのJUnitテストクラスに対して一度だけSpringアプリケーションコンテキストをロードする方法があるかどうか疑問に思っていました。
参考までに、私たちは Spring 3.0.5 と JUnit 4.5 を使用し、プロジェクトをビルドするために Maven を使用しています。
どのように解決するのですか?
はい、これは完全に可能です。あなたがしなければならないことは、同じ
locations
属性を使用するだけです。
@ContextConfiguration(locations = "classpath:test-context.xml")
Springはアプリケーションのコンテキストを
locations
属性でキャッシュされるので、もし同じ
locations
が2回目に現れた場合、Springは新しいコンテキストを作成するのではなく、同じコンテキストを使用します。
この機能については、記事を書きました。 Springの統合テストを高速化する . また、Springのドキュメントにも詳しく書かれています。 9.3.2.1 コンテキスト管理とキャッシング .
これには興味深い含意があります。SpringはJUnitがいつ終了したかを知らないので、すべてのコンテクスト
を永遠に
をキャッシュし、JVMシャットダウンフックを使用してそれらを閉じます。この動作は(特に、多くのテストクラスで異なる
locations
を持つ多くのテストクラスがある場合は特に)この動作は、過剰なメモリ使用やメモリリークなどを引き起こすかもしれません。コンテキストをキャッシュすることのもう一つの利点です。
関連
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み】JpaTestを行う際に@SpringBootConfigurationを見つけることができない
-
[解決済み] Junit: 統合テストと単体テストの分割
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Spring Data JPAでネイティブクエリ結果をNon-Entity POJOにマップする。
-
[解決済み] Spring Boot Rest Controllerは、異なるHTTPステータスコードを返すには?
-
[解決済み] Spring BootとMongoDBへの接続設定方法
-
[解決済み] Spring Securityをセッションなしで使用するにはどうすればよいですか?
-
[解決済み] Intellij IDEAがSpring Bootのプロパティを解決できないと訴えるが、問題なく動作している
-
[解決済み] Spring CORS 'Access-Control-Allow-Origin' ヘッダが存在しない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring Boot Rest Controllerは、異なるHTTPステータスコードを返すには?
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] 同じurlパターンに対して異なる引数で2つのメソッドを作成する
-
[解決済み] Spring BeanPostProcessorは具体的にどのように動作するのですか?
-
[解決済み] なぜ春になると静電場が自動化されないのか?
-
[解決済み] Spring Securityをセッションなしで使用するにはどうすればよいですか?
-
[解決済み] kotlinで@Autowiredのようなspringアノテーションを使用する方法とは?
-
[解決済み] Intellij IDEAがSpring Bootのプロパティを解決できないと訴えるが、問題なく動作している
-
[解決済み] Spring CORS 'Access-Control-Allow-Origin' ヘッダが存在しない。
-
[解決済み] RequestBodyと@RequestParamの違いは何ですか?