1. 程式人生 > >springboot遇見問題總結

springboot遇見問題總結

項目目錄 ring code exc moc 對象 str json col

今天開始學習創建springboot項目

問題1:

產生異常:

技術分享圖片

創建項目目錄:

技術分享圖片

demo代碼:

代碼Controller

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by andyliu on 2018/10/3.
 */
@RestController
public class LoginController {

    @RequestMapping(value 
= "/login") public String login(){ return "success1"; } }

測試用例采用mockMvc實現單元測試用例 mockmvc是mvc單元測試用例對象 preform(英文執行的意思)方法執行方法內部需要一個MockMvcRequestBuilders對象

MockRequestBuilders對象用來構建mockmvc的通過get方法模擬瀏覽器發送的get請求get方法參數為url請求地址,同時accept方法參數為指定接收的媒體類型為什麽

andExpect方法為期望方法 也就是說該方法是我們期望的預期值 內部傳入status()方法是對返回的狀態判斷通過isOk判斷狀態是否正確 同時可以添加多個期望比如期望內容 通過content()方法返回內容調用string()方法內容通過equalTo()方法來比較返回值內容是否相等。

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class LoginTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void loginTest() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/login").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo(
"success"))); } }

當執行測試用例的時候這樣會報出上面的錯誤。

為什麽采用mackmvc來進行單元測試那,這樣可以不通過創建httpClient來創建客戶端請求 同時避免了由於網絡等各種原因導致的測試問題

那麽上面的異常產生原因是什麽那:

在闡述上面的問題原因之前 在我說一下這個問題在使用測試用例之前就出現了 那就是創建好springboot項目後采用瀏覽器訪問localhost:8080/login 無法訪問創建好的方法。以前創建過一直認為這樣寫沒有錯誤,沒錯代碼是沒有任何問題的。問題產生原因是????

答案:

springboot創建同時會創建一個啟動類 因為springboot內部集成了tomcat等應用服務器 測試中也同樣創建了這樣一個啟動類

@SpringBootApplication
public class SBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SBootDemoApplication.class, args);
    }
}

springboot啟動類要放在根目錄下,網上都說根目錄,按我說就是你所有代碼的上一級目錄,可以讓啟動類在啟動的時候掃描到所有的類

正確的操作如圖就解決了這個問題

技術分享圖片

springboot遇見問題總結