テスト実行の高速化、Springコンテキストのモッキング
· 5分の読み時間
概要
プロジェクトごとにテストコードを書くことは一般的になっています。プロジェクトが成長するにつれて、テストの数も増え、全体のテスト実行時間が長くなります。特にSpringフレームワークに基づいたプロジェクトでは、Spring Beanコンテキストの読み込みによってテスト実行が大幅に遅くなることがあります。この記事では、この問題に対処する方法を紹介します。
すべてのテストをユニットテストとして書く
テストは速くなければなりません。テストが速ければ速いほど、頻繁に実行することに躊躇しなくなります。すべてのテストを一度に実行するのに10分かかる場合、フィードバックは10分後にしか得られません。
Springでテストを高速化するためには、@SpringBootTest
を使用しないことが重要です。すべてのBeanを読み込むと、必要なBeanを読み込む時間が圧倒的に長くなり、ビジネスロジックをテストするコードの実行時間よりも長くなります。
@SpringBootTest
class SpringApplicationTest {
@Test
void main() {
}
}
上記のコードは、Springアプリケーションを実行するための基本的なテストコードです。@SpringBootTest
によって構成されたすべてのBeanが読み込まれます。では、テストに必要なBeanだけをどのように注入するのでしょうか?