【Java】Spring Boot 4 でコントローラークラスをJUnitにてテストしようとしたらimportでちょいハマりした話
目次
【Java】Spring Boot 4 でコントローラークラスをJUnitにてテストしようとしたらimportでちょいハマりした話
今回使用した環境
Windows 11 25H2
Java 25
Spring Boot 4.0.3
ソースコード
AIから教えてもらったコードを貼りつけてJunitでテストをしようとしてたのですが、import文でコンパイルエラーとなったため、ちょこっとハマりました。
結論から申し上げると以下ソースコードでコンパイル解消&テストを実施できました。
package bsoftest.controller;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import java.time.LocalDate;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import bsoftest.service.CommonService;
@WebMvcTest(CommonController.class)
class CommonControllerTest {
@Autowired
private MockMvc mockMvc;
@MockitoBean
private CommonService commonService;
@Test
void testGetBusinessDate() throws Exception {
when(commonService.getBusinessDate())
.thenReturn(LocalDate.of(2026, 3, 20));
mockMvc.perform(get("/api/common/business-date"))
.andExpect(status().isOk())
.andExpect(content().string("2026/03/20"));
}
}こちら、サービスクラス (CommonService) が単一の日付を返してくるので、その結果を元にフロントへのレスポンスが問題ないかをテストしています。
ハマったポイント
ハマりポイントとしてはAIが返してきたimport文は以下。
import org.springframework.boot.test.mock.mockito.MockBean;で修正後は以下。
import org.springframework.test.context.bean.override.mockito.MockitoBean;Spring Boot 3.4以降、MockBean ⇒ MockitoBeanに変更されているんですね。
2026/3/20現在、Spring Boot 4はまだリリースしてからそこまで日が経っていないのでAIが学習しきれていないのでしょうか。
( それとも筆者のプロンプトが悪いだけなのかもしれませんが… )
動作確認
JUnitテストでの成功結果です。

以上となります。
ここまでお読みいただきありがとうございました。