Dependency Injection

【Java】Mockitoで依存性注入を使わずにユニットテストする

デバイスソフトウエア開発部の本間です。

最近、弊社業務にて Android アプリの保守を担当する機会がありました。そのアプリには自動テストが存在しなかったため、安全に改修を進めるための回帰テストとして、まずユニットテスト(JUnit)を導入しました。

しかしテストを書き始めると、クラス同士が直接依存していたり、I/O などの副作用が各所に埋め込まれており、既存コードに変更を加えなければユニットテストが難しいことが分かりました。そこで、モッキングフレームワークである Mockito を導入することにしました。これにより依存先を任意の処理(モック)へ差し替えることが可能となり、ユニットテストを実施することができました。

本記事では、その際に使った Mockito の機能を、実例を交えてご紹介します。

続きを読む

なぜSpring BootはDI(依存性の注入)を使うのか?

SpringBoot

SJC共同開発推進室の(ちょう)です。

Spring Bootを使い始めた際、@Autowiredと書くだけでインスタンスが自動で使えるようになることに、戸惑いと同時に「魔法みたいだ」と感じた方も多いのではないでしょうか。

この「魔法」の正体こそ、Springフレームワークの根幹をなすDI(依存性の注入)です。

本記事では、DIが「なぜ必要なのか」を理解するために、設計の基本である密結合疎結合から掘り下げます。その上で、SpringのDIコンテナが具体的にどのような仕組みで Bean を生成し、@Autowired に応えて注入しているのかを、ステップバイステップで徹底的に解説します。

DIを深く理解することは、テストしやすく、変更に強いコードを書くための大きな一歩です。ぜひ最後までお付き合いください!

続きを読む