Springboot 技術整合--筆記9--controller單元測試

測試類型

  • 不帶參數(shù)
  • 帶參數(shù)(必須傳入的參數(shù)必須填全)
  • controller單元測試-攜帶session

HelloWorldController 控制器


@Controller
@RequestMapping("wechatTask")
public class HelloWorldController {
    static public String  HELLO = "Hello ,World";


    @GetMapping("/study/helloWorld")
    @ResponseBody
    public IJSONResult helloWorld(){
        //return "Hello ,World";
        return IJSONResult.ok("Hello ,World");
    }

    @GetMapping("/study/hello")
    @ResponseBody
    public String hello(){
        return HELLO;

    }

    @PostMapping("/study/helloParam")
    @ResponseBody
    //@RequestBody  ==采用@RestController 不再需要這個
    public IJSONResult helloParam(@RequestParam String name, @RequestParam int age){
        System.out.println(name);

        return IJSONResult.ok("Hello ,World :name =" +name+ ";age="+age);

    }


}
類postman運行情況

控制器的測試用例HelloWorldControllerTests

@RunWith(SpringRunner.class)
@WebAppConfiguration // 開啟web應用配置
@SpringBootTest
public class HelloWorldControllerTests {
    private MockMvc mvc;

    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }
    @Test
    public void helloWorld() throws Exception{  //打印出正常結果
        MvcResult mvcResult = mvc.perform(
                MockMvcRequestBuilders.get("/wechatTask/study/helloWorld"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

        System.out.println("http get方法結果:"+mvcResult.getResponse().getContentAsString());
        //http get方法結果:{"code":200,"msg":"OK","data":"Hello ,World","time":1560405746459,"ok":null}
    }

    @Test
    public void helloWorldParam() throws Exception{
        MvcResult mvcResult = mvc.perform(
                MockMvcRequestBuilders.post("/wechatTask/study/helloWorldParam")
                        .accept(MediaType.APPLICATION_JSON)
                        .param("name","雪梅") //注意如果是多個參數(shù)一定要全否則
                        .param("age","19")  )

                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

        System.out.println("http post 帶參數(shù)的結果:"+mvcResult.getResponse().getContentAsString());
        //http post 帶參數(shù)的結果:{"code":200,"msg":"OK","data":"Hello ,World :name =雪梅;age=19","time":1560407516953,"ok":null}
    }

    @Test
    public void hello() throws Exception {
        mvc.perform(
                MockMvcRequestBuilders
                        //.get("wechatTask/study/helloWorld")//回報錯 java.lang.AssertionError: Status Expected :200 Actual   :404
                        .get("http://localhost:8080//wechatTask/study/hello")
                        .accept(MediaType.APPLICATION_JSON_UTF8)   //MediaType.APPLICATION_JSON_UTF8
        )


                .andExpect(status().isOk()) // 用于判斷返回的期望值
                .andExpect(content().string(equalTo(HelloWorldController.HELLO)));

        //每頁異常表示成功

    }
}

注意帶參數(shù)的與不帶參數(shù)的區(qū)別


控制器測試用例的運行截圖

參考文章

Spring Boot從Controller層進行單元測試
實戰(zhàn)Spring Boot 2.0系列:全局異常處理和測試

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖斑匪,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡踪旷,警方通過查閱死者的電腦和手機曼氛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來令野,“玉大人舀患,你說我怎么就攤上這事∑疲” “怎么了聊浅?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長现使。 經(jīng)常有香客問我低匙,道長,這世上最難降的妖魔是什么朴下? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任努咐,我火速辦了婚禮,結果婚禮上殴胧,老公的妹妹穿的比我還像新娘渗稍。我一直安慰自己,他們只是感情好团滥,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布竿屹。 她就那樣靜靜地躺著,像睡著了一般灸姊。 火紅的嫁衣襯著肌膚如雪拱燃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天力惯,我揣著相機與錄音碗誉,去河邊找鬼。 笑死父晶,一個胖子當著我的面吹牛哮缺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甲喝,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼尝苇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了埠胖?” 一聲冷哼從身側(cè)響起糠溜,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎直撤,沒想到半個月后非竿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡谋竖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年红柱,在試婚紗的時候發(fā)現(xiàn)自己被綠了侮东。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡豹芯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驱敲,到底是詐尸還是另有隱情铁蹈,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布众眨,位于F島的核電站握牧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏娩梨。R本人自食惡果不足惜沿腰,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狈定。 院中可真熱鬧颂龙,春花似錦、人聲如沸纽什。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芦缰。三九已至企巢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間让蕾,已是汗流浹背浪规。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留探孝,地道東北人笋婿。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像再姑,于是被迫代替她去往敵國和親萌抵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361