私は最近、現在のプロジェクトでフリーランサーとして働き始めました。私が思いついたことの 1 つは、失敗した Jenkins ビルドでした (ここに着手する 1 週間前の 4 月 8 日から失敗していました)。
一般的に言えば、ログには大量の DI 問題が表示されます。私が最初にしたことは、同じアプリケーション コンテキストから始めて、すべてのテストを同じように動作させることでした。彼らはまた、正しく動作しないように見える独自の「モッキング」も実装しました。主任開発者との話し合いの後、Springockito の使用を開始することを提案しました。(特定のモジュールでは、統合テストのためにモックが必要でした -- 従来の理由で、変更できません)
とにかく、その後、物事はひどく失敗し始めました。テストで嘲笑された、単に嘲笑されなかった、または見つからなかったなどの多くの豆。通常、アプリケーション コンテキストの読み込みに失敗し、1 つまたは別の Bean が見つからないことを示します。
私はさまざまなこととさまざまなアプローチを試しましたが、最終的には、すべてのテストに @DirtiesContext を追加するという、私が最も恐れていたことだけがうまくいきました。現在、maven ビルドは再び緑色に変わり始めており、テストは本来の動作を開始しています。しかし、私は毎回Springコンテキストをリロードしています。これには時間がかかります.コンテキストは約1〜2秒でロードされるため、これはすべて相対的です.
この話の補足として、彼らは Hibernate 4 にアップグレードしたため、Spring 3.2 にアップグレードしました。以前は、Spring 3 の古いバージョンを使用していました。当時はすべてのテストが機能しており、@DirtiesContext は必要ありませんでした。
さて、私が最も心配しているのは、この奇妙な振る舞いの説明がすぐには思いつかないことです. @Autowired Bean を使用するテストを起動するだけで、Springs コンテキストが汚れているように見えます。すべてのテストがモックを使用しているわけではないため、そうではありません。これは誰にとってもおなじみの音ですか?Spring (の最新バージョン) との統合テストで同じ経験をした人はいますか?
Stackoverflow で、このチケットを見つけました: How can a test 'dirty' a spring application context? 私が見ている動作をほぼ要約しているように見えますが、要点は、サービス/リポジトリ/...を自動配線していて、それらのクラスにセッターがまったくないということです。
何かご意見は?
ありがとう!