真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMVC應(yīng)用如何進(jìn)行測(cè)試-創(chuàng)新互聯(lián)

本篇文章為大家展示了Spring MVC應(yīng)用如何進(jìn)行測(cè)試,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)岳塘,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

Spring的依賴注入使得我們的代碼非常容易進(jìn)行單元測(cè)試——@Controller, @Service@Entity等注解標(biāo)注的類基本都是POJO(plain old Java object),也就是說(shuō)很少依賴于Spring容器本身的API。我們可以非常容易地使用JUnit或TestNG編寫(xiě)測(cè)試代碼。另一方面,對(duì)于三層架構(gòu)的Spring Web應(yīng)用(Controller, Service, DAO),使用Mock活Stub方法也能夠更好的來(lái)測(cè)試我們的代碼邏輯。例如Service層代碼的單元測(cè)試中,依賴的DAO(或Repository)對(duì)象都是根據(jù)應(yīng)用測(cè)試需求Mock出來(lái)的,而不需要真正去訪問(wèn)數(shù)據(jù)庫(kù)。

Spring Web測(cè)試

在對(duì)Spring Web應(yīng)用中的@Controller代碼進(jìn)行單元測(cè)試的過(guò)程中,一般的方法是創(chuàng)建@Controller對(duì)象,同時(shí)將它依賴的一些Mock對(duì)象——例如MockHttpServletRequest, MockHttpServletResponse(都由spring-test模塊提供,無(wú)需自己編寫(xiě))作為@Controller方法的參數(shù)。但是對(duì)于處理Web請(qǐng)求的@Controller代碼來(lái)說(shuō),僅僅測(cè)試Handler方法里的代碼是遠(yuǎn)遠(yuǎn)不夠的,對(duì)于一個(gè)處理HTTP請(qǐng)求的@Controller`,我們還需要測(cè)試:

  • @RequestMapping路由是否正確
  • 數(shù)據(jù)綁定、類型轉(zhuǎn)換、校驗(yàn)邏輯是否正確——數(shù)據(jù)包括URL參數(shù)、表單、@PathVariable
  • @InitBinder, @ModelAttribute, @ExceptionHandler等注解的方法或?qū)傩杂?jì)算過(guò)程

上述過(guò)程貫穿于HTTP請(qǐng)求處理的生命周期中,所以對(duì)于Spring Web應(yīng)用中@Controller代碼單元測(cè)試的概念,應(yīng)該做一些擴(kuò)充——不僅僅局限于代碼本身,也要結(jié)合MVC框架中的各個(gè)處理過(guò)程。

本文接下來(lái)的內(nèi)容代碼,都以Spring Boot為例,首先假設(shè)我們通過(guò)Spring Boot創(chuàng)建了一個(gè)最簡(jiǎn)單的Web Mvc應(yīng)用——包含了一個(gè)最簡(jiǎn)單的Conroller,處理/users/{id}對(duì)應(yīng)的HTTP請(qǐng)求,返回值是id={id}(通過(guò)String.format()方法),那么可以為它創(chuàng)建如下測(cè)試代碼:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringMvcTestDemoApplication.class)
@WebAppConfiguration
public class SpringMvcTestDemoApplicationTests {

  private MockMvc mockMvc;

  @Before
  public void init() {
    this.mockMvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
  }

  @Test
  public void getUserById() throws Exception {
    long id = 1;
    this.mockMvc.perform(get("/users/" + id))
        .andExpect(status().isOk())
        .andExpect(content().string("id=" + id));
  }

}

當(dāng)前題目:SpringMVC應(yīng)用如何進(jìn)行測(cè)試-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/coocsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部