我是springboot的新手。我只是在看
在谷歌之后我意識到它可能找不到我的控制器所以我添加@Import(HomeController.class)到測驗類。看起來像:
package com.qph.tacos;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.context.annotation.Import;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
@WebMvcTest(HomeControllerTest.class)
@Import(HomeController.class)
public class HomeControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testHomePage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.view().name("home"))
.andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("Welcome to...")));
}
}
那么它就通過了測驗!!!
現在我只是想知道為什么作者撰寫的代碼可以通過測驗而不用@Import(HomeController.class)?
我的目錄結構是這樣的:

要測驗的控制器是:
package com.qph.tacos;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
// return the name of template
return "home";
}
}
我是springboot的新手。也許這是一個簡單的問題,但我真的花了很多時間。
謝謝你的幫助!
uj5u.com熱心網友回復:
改成
@WebMvcTest(HomeController.class)
您應該使用此注釋參考被測控制器,否則它將不會加載到應用程式背景關系中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505297.html
上一篇:Spring是否正確處理If-Modified-Since和If-None-Match的組合?
下一篇:這里聊聊掃地機的 IOT 開發
