テストの記事一覧
Spring Bootでの単体テスト、結合テスト、Testcontainers活用など、テスト戦略に関する記事をまとめています。
-
Spring BootでMockMvcを使ってファイルアップロードAPIをテストする方法 - MockMultipartFileとサイズ上限・MIME検証の異常系テスト
MockMultipartFileとperform(multipart())を使い、ファイルアップロードAPIの正常系テストに加え、サイズ上限超過や不正MIMEタイプで400が返ることを検証する異常系テストの書き方を解説します。
-
Spring Boot + MyBatisでMapperを単体テストする方法 - @MybatisTestが存在しない理由とH2/Testcontainersでの代替構成
MyBatisのMapperには@DataJpaTest相当の専用スライステストが存在しない。その理由をSqlSessionとの結合度から解説し、@SpringBootTest最小構成・軽量Java Config・H2・Testcontainersの4パターンを比較表と動くコードで示す。
-
Spring BootでMockMvcを使ってファイルダウンロードAPIをテストする方法 - Content-Dispositionとバイナリレスポンスの検証
MockMvcでファイルダウンロードAPI(MultipartFile保存後のダウンロード、StreamingResponseBody、Excel/PDF/CSVエクスポート)をテストする方法を解説。Content-Dispositionヘッダー、バイナリボディの一致検証、Rangeリクエスト(206 Partial Content)のテストパターンまで実装例付きで紹介します。
-
Spring Bootのテストで@Sqlアノテーションを使ってテストデータを投入する方法
@DataJpaTestや@SpringBootTestで@Sqlアノテーションを使い、テストごとに宣言的にフィクスチャデータを投入する方法を解説。executionPhaseやerrorModeの使い分け、data.sqlとの違いまで実例付きで紹介します。
-
Spring Boot @SpringBootTestのwebEnvironment使い分け - MOCK・RANDOM_PORT・DEFINED_PORT・NONEの選び方
@SpringBootTestのwebEnvironment4モード(MOCK/RANDOM_PORT/DEFINED_PORT/NONE)が何を起動し何を起動しないかを比較表と動くコードで整理。@MockitoBeanでの外部依存差し替え、@Nestedでのシナリオ分割、ApplicationContext全体起動が本当に必要なケースまで解説します。
-
Spring Boot @JsonTestでJSONシリアライズ/デシリアライズをテストする方法 - JacksonTesterとObjectMapperの検証
@JsonTestスライスとJacksonTesterを使い、DTOのシリアライズ/デシリアライズ仕様を軽量・高速にテストする方法を解説。日付フォーマットやnull除外設定、@JsonComponentのカスタムSerializer/Deserializerの回帰防止まで実装例付きで紹介します。
-
Spring SecurityとMockMvcを組み合わせて認証必須APIをテストする方法 - @WithMockUser・SecurityMockMvcRequestPostProcessorsの使い分け
Spring Securityを導入したControllerを@WebMvcTestでテストすると401/403で失敗する原因を解説し、@WithMockUser・@WithUserDetails・SecurityMockMvcRequestPostProcessors(user()/csrf()/authentication())を使い分けて認証済み状態を再現する実装方法を紹介します。
-
Spring Bootの@SpringBootTest(RANDOM_PORT)とTestRestTemplateで実HTTPのE2Eテストを書く方法
@SpringBootTest(webEnvironment = RANDOM_PORT)でアプリを実起動し、TestRestTemplateでステータス・ヘッダー・ボディを検証する統合テストの書き方を解説。MockMvcとの違い、認証付きエンドポイントへのリクエスト、エラーレスポンスの検証まで動くコード付きで紹介します。
-
Spring BootのService層テストでMockitoを使いこなす - when・verify・ArgumentCaptor・doThrow実践
Mockitoのwhen/thenReturn、verify(times・never・inOrder)、ArgumentCaptor、voidメソッドのdoThrow/doAnswerをOrderServiceのテストで実践します。UnnecessaryStubbingExceptionとInvalidUseOfMatchersExceptionの直し方、@InjectMocksと@MockitoBeanの使い分けも解説。
-
Spring Bootのテストアノテーション使い分け早見表 - @SpringBootTest・@WebMvcTest・@DataJpaTestの選び方
Spring Bootのテストアノテーションの使い分けを早見表と判断フローで整理します。@SpringBootTest・@WebMvcTest・@DataJpaTest・@JsonTest・@RestClientTestの起動範囲と速度の違い、@MockitoBeanやMockMvc・Testcontainersとの組み合わせをレイヤー別に解説します。
-
Spring Boot 3.4で@MockBeanが非推奨に - @MockitoBean・@MockitoSpyBeanへの移行と使い方
Spring Boot 3.4で@MockBean/@SpyBeanが非推奨化。置き換え先の@MockitoBean・@MockitoSpyBeanの正しいimport、パッケージ移動、旧APIとの差分、既存テストの一括移行手順を実例付きで解説します。
-
Spring Bootの@DataJpaTestでRepository層のスライステストを書く方法 - H2とTestcontainersの使い分け
Spring Boot 3.xの@DataJpaTestでRepository層に絞ったスライステストを書く方法を解説。自動ロールバック、TestEntityManager、@AutoConfigureTestDatabaseによるH2/実DB切り替え、クエリメソッドや@Queryの検証、Testcontainers併用の使い分けまでを実例つきで紹介します。
-
Spring BootでMockMvcを使ったControllerの単体テストを書く方法 - @WebMvcTest入門
DB不要・高速でコピペで動くController単体テストを@WebMvcTestとMockMvcで実現。@MockBeanでServiceをモック化し、jsonPathでJSON検証、バリデーションエラー(400)、Security(@WithMockUser)まで実装例付きで解説します。
-
Spring Bootの@ConfigurationPropertiesをBean Validationで検証する方法 - 設定ミスを起動時に検出するFail Fast実装ガイド
Spring Bootの@ConfigurationPropertiesにBean Validation(@Validated/@NotBlank/@Pattern)を組み合わせ、設定ミスを本番障害になる前にアプリ起動時で即検出する手順を解説。ネスト検証の@Valid伝播、起動エラーメッセージの読み方、ApplicationContextRunnerによる軽量テストまで実装例付きで網羅します。
-
Spring BootでWireMockを使って外部API呼び出しをテストする方法 - import設定から実践まで
WireMockをSpring Bootのテストに導入し、正常系・エラー系・タイムアウトまで外部APIのスタブをHTTPレベルで定義する実践ガイド。WireMock 3.xの新パッケージ org.wiremock.client.WireMock の正しいimport文や、MockitoとWireMockの使い分け基準も解説します。
-
Spring Bootで結合テストを書く方法 - @SpringBootTestとTestcontainersでDBまで通したテスト
@SpringBootTestでアプリ全体を起動するテストの書き方と、TestcontainersでDockerコンテナ上の実DBに接続した結合テストの実装手順をコード例とともに解説します。
-
Spring Bootでテストを書こう - JUnitとMockitoで始める単体テスト入門
Spring Bootの単体テストをJUnit 5とMockitoで書く方法を、Service層(@Mock/@InjectMocks)とController層(@WebMvcTest/@MockBean/MockMvc)に分けて段階的に解説。Given-When-Thenパターン、正常系・異常系、assertThrowsまで具体的なコード例で学べます。