使用MockMvc測試Controller

概述

對模塊進行集成測試時题造,希望能夠通過輸入URL對Controller進行測試,如果通過啟動服務(wù)器将鸵,建立http client進行測試勉盅,這樣會使得測試變得很麻煩,比如顶掉,啟動速度慢草娜,測試驗證不方便,依賴網(wǎng)絡(luò)環(huán)境等痒筒,這樣會導(dǎo)致測試無法進行宰闰,為了可以對Controller進行測試,可以通過引入MockMVC進行解決簿透。

簡介

MockMvc實現(xiàn)了對Http請求的模擬移袍,能夠直接使用網(wǎng)絡(luò)的形式,轉(zhuǎn)換到Controller的調(diào)用老充,這樣可以使得測試速度快葡盗、不依賴網(wǎng)絡(luò)環(huán)境,而且提供了一套驗證的工具啡浊,這樣可以使得請求的驗證統(tǒng)一而且很方便觅够。

運行配置

用到的注解

  • RunWith(SpringJUnit4ClassRunner.class): 表示使用Spring Test組件進行單元測試;
  • WebAppConfiguration: 使用這個Annotate會在跑單元測試的時候真實的啟一個web服務(wù),然后開始調(diào)用Controller的Rest API巷嚣,待單元測試跑完之后再將web服務(wù)停掉;
  • ContextConfiguration: 指定Bean的配置文件信息喘先,可以有多種方式,這個例子使用的是文件路徑形式廷粒,如果有多個配置文件苹祟,可以將括號中的信息配置為一個字符串?dāng)?shù)組來表示;

基本框架


/**
 * 演示MockMVC使用
 * @author zhanyongzhi
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:**web-config.xml")
@WebAppConfiguration
public class MockMvcTest {
    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Before
    public void setUp() throws Exception {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }
}

測試邏輯

校驗Controller處理之后,請求是否為成功狀態(tài)评雌,返回的內(nèi)容是否包含了:"{'foo':'bar'}"字符串树枫。

  • mockMvc調(diào)用perform,調(diào)用controller的業(yè)務(wù)處理邏輯
  • perform返回ResultActions景东,返回操作結(jié)果砂轻,通過ResultActions,提供了統(tǒng)一的驗證方式斤吐。
  • 使用StatusResultMatchers對請求結(jié)果進行驗證
  • 使用ContentResultMatchers對請求返回的內(nèi)容進行驗證

/**
 * 演示MockMVC使用
 * @author zhanyongzhi
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:**web-config.xml")
@WebAppConfiguration
public class MockMvcTest {
    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Before
    public void setUp() throws Exception {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @Test
    public void demo() throws Exception {
        mockMvc.perform(get("/demo/test").accept(MediaType.parseMediaType("application/json;charset=UTF-8")))
               .andExpect(status().isOk())
               .andExpect(content().contentType("application/json;charset=UTF-8"))
               .andExpect(content().json("{'foo':'bar'}"));
    }
}

完整代碼在github中查看

參考

test mockmvc
integration testing
spring mvc unit test

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搔涝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子和措,更是在濱河造成了極大的恐慌庄呈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件派阱,死亡現(xiàn)場離奇詭異诬留,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門文兑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒刚,“玉大人,你說我怎么就攤上這事绿贞∫蚩椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵籍铁,是天一觀的道長涡上。 經(jīng)常有香客問我,道長拒名,這世上最難降的妖魔是什么吩愧? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮靡狞,結(jié)果婚禮上耻警,老公的妹妹穿的比我還像新娘隔嫡。我一直安慰自己甸怕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布腮恩。 她就那樣靜靜地躺著梢杭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秸滴。 梳的紋絲不亂的頭發(fā)上武契,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音荡含,去河邊找鬼咒唆。 笑死,一個胖子當(dāng)著我的面吹牛释液,可吹牛的內(nèi)容都是我干的全释。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼误债,長吁一口氣:“原來是場噩夢啊……” “哼浸船!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寝蹈,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤李命,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箫老,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體封字,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了周叮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩撑。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖仿耽,靈堂內(nèi)的尸體忽然破棺而出合冀,到底是詐尸還是另有隱情,我是刑警寧澤项贺,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布君躺,位于F島的核電站,受9級特大地震影響开缎,放射性物質(zhì)發(fā)生泄漏棕叫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一奕删、第九天 我趴在偏房一處隱蔽的房頂上張望俺泣。 院中可真熱鬧,春花似錦完残、人聲如沸伏钠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟掂。三九已至,卻和暖如春扎拣,著一層夾襖步出監(jiān)牢的瞬間赴肚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工二蓝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留誉券,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓刊愚,卻偏偏與公主長得像踊跟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子百拓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容