【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テストでの成功結果です。


以上となります。

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

Java

Posted by だゆう