亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

新人上路-搭建項(xiàng)目-springweb-controller測(cè)試

shiina / 1469人閱讀

摘要:新人上路搭建項(xiàng)目測(cè)試和配置測(cè)試最基本的依賴配置添加字符集過(guò)濾器解析返回?cái)?shù)據(jù)靜態(tài)資源不做處理解析返回?cái)?shù)據(jù)測(cè)試中文測(cè)試踩坑記錄測(cè)試中文測(cè)試尚未解決單元測(cè)試不知道怎么使用的配置最后代碼分支代碼分支

新人上路-搭建項(xiàng)目-springweb-controller測(cè)試 maven和gradle配置

測(cè)試controller最基本的依賴

maven

        
        
          org.springframework
          spring-webmvc
          ${spring.version}
        
        
          com.fasterxml.jackson.core
          jackson-databind
          ${jackson.version}
        
        

        
        
          javax.servlet
          javax.servlet-api
          3.1.0
          provided
        
        

        
        
          org.springframework
          spring-test
          ${spring.version}
          test
        
        
          org.mockito
          mockito-core
          ${mockito.version}
          test
        
        
          junit
          junit
          ${junit.version}
          test
        
        

gradle

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-devtools")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile("org.mockito:mockito-core:$mockitoVersion")
}

springmvc javaconfig配置

WebAppInitializer

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class[] getRootConfigClasses() {
    return new Class[]{ RootConfig.class };
    }

    protected Class[] getServletConfigClasses() {
    return new Class[]{ WebConfig.class };
    }

    protected String[] getServletMappings() {
    return new String[]{"/"};
    }

    /** 添加字符集過(guò)濾器 **/
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
    servletContext.addFilter("characterEncodingFilter",
        new CharacterEncodingFilter("utf-8", true))
        .addMappingForUrlPatterns(null, false, "/*");
    }
}

WebConfig

@Configuration
@EnableWebMvc
@ComponentScan("com.seal_de.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
    /** 解析json返回?cái)?shù)據(jù) **/
    @Override
    public void configureMessageConverters(List> converters) {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

    List mediaTypes = new ArrayList(converter.getSupportedMediaTypes());
    mediaTypes.addAll(Arrays.asList(MediaType.TEXT_PLAIN, MediaType.TEXT_HTML, MediaType.TEXT_XML));
    converter.setSupportedMediaTypes(mediaTypes);

    ObjectMapper objectMapper = converter.getObjectMapper();
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    converters.add(converter);
    }

    /** 靜態(tài)資源不做處理 **/
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
    }
}

RootConfig

@Configuration
@ComponentScan(basePackages = {"com.seal_de"},
    excludeFilters={@ComponentScan.Filter(type= FilterType.ANNOTATION, value= EnableWebMvc.class)})
public class RootConfig {
}

springboot javaconfig

WebConfig

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Bean
    public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    messageSource.setDefaultEncoding("UTF-8");

    return messageSource;
    }

    /**解析json返回?cái)?shù)據(jù)**/
    @Override
    public void configureMessageConverters(List> converters) {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

    List mediaTypes = new ArrayList(converter.getSupportedMediaTypes());
    converter.setSupportedMediaTypes(mediaTypes);
    mediaTypes.addAll(Arrays.asList(MediaType.TEXT_PLAIN, MediaType.TEXT_HTML, MediaType.TEXT_XML));

    ObjectMapper objectMapper = converter.getObjectMapper();
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    converters.add(converter);
    }
}

測(cè)試controller

controller

@RestController
public class HomeController {
    @RequestMapping("/")
    public String home() {
        return "home";
    }

    @RequestMapping("/cn")
    public String cn() {
        return "中文測(cè)試";
    }

    @RequestMapping("/object")
    public Book object() {
        return new Book(10, "springmvc-javaconfig踩坑記錄", new Date());
    }


    private class Book {
        private Integer id;
        private String name;
        private Date pubDate;

        public Book(Integer id, String name, Date pubDate) {
            this.id = id;
            this.name = name;
            this.pubDate = pubDate;
        }

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Date getPubDate() {
            return pubDate;
        }

        public void setPubDate(Date pubDate) {
            this.pubDate = pubDate;
        }
    }
}

controller測(cè)試

import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.MockitoAnnotations;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;

/**
 * Created by sealde on 5/27/17.
 */
public class HomeControllerTest {
    private MockMvc mockMvc;

    @InjectMocks
    private HomeController controller;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        this.mockMvc = standaloneSetup(controller).build();
    }

    @Test
    public void testHome() throws Exception {
        mockMvc.perform(get("/"))
            .andDo(print())
            .andExpect(status().isOk())
            .andExpect(content().string("home"));
    }

    @Test
    public void testCn() throws Exception {
        mockMvc.perform(get("/cn")
            .accept(MediaType.APPLICATION_JSON_UTF8))
            .andDo(print())
            .andExpect(status().isOk())
            .andExpect(content().string("中文測(cè)試"));
    }

    @Test
    public void testObject() throws Exception {
        mockMvc.perform(get("/object")
            .accept(MediaType.APPLICATION_JSON_UTF8))
            .andDo(print())
            .andExpect(status().isOk());
    }
}

尚未解決

單元測(cè)試不知道怎么使用 WebConfig 的配置

最后

代碼(springmvc dev1分支): http://git.oschina.net/sealde...

代碼(springboot dev1分支): https://git.oschina.net/seald...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/67140.html

相關(guān)文章

  • 新手上路-搭建項(xiàng)目-springboot-swagger2

    摘要:新手上路搭建項(xiàng)目是一個(gè)接口文檔軟件界面如下添加這里使用版本可以正常使用配置文件測(cè)試新手上路。 新手上路-搭建項(xiàng)目-springboot-swagger2 swagger2 是一個(gè)接口文檔軟件 界面如下 showImg(https://segmentfault.com/img/bVOoim); gradle添加 compile(io.springfox:springfox-swagger...

    XGBCCC 評(píng)論0 收藏0
  • 一步步搭建JavaScript框架——初始化項(xiàng)目

    摘要:雖然還不夠,但是開(kāi)始了。一步步搭建框架項(xiàng)目名稱一開(kāi)始我做的次是是的一開(kāi)始什么也沒(méi)做,除了從和上注冊(cè)了一個(gè)叫做的庫(kù)然后在我們還沒(méi)有開(kāi)始寫(xiě)代碼的時(shí)候版本就已經(jīng)是這個(gè)速度好快。。生成項(xiàng)目框架為了簡(jiǎn)化這一個(gè)痛苦的過(guò)程,我們還是用。 從開(kāi)始打算寫(xiě)一個(gè)MV*,到一個(gè)簡(jiǎn)單的demo,花了幾天的時(shí)間,雖然很多代碼都是復(fù)制/改造過(guò)來(lái)的,然而It Works(nginx的那句話會(huì)讓人激動(dòng)有木有)。現(xiàn)在他叫...

    omgdog 評(píng)論0 收藏0
  • H5新人福音~(yú)零配置搭建現(xiàn)代化的前端工程

    摘要:它可以讓你在沒(méi)有任何構(gòu)建工具例如或等工具配置經(jīng)驗(yàn)的情況下,幫你快速生成一個(gè)完整的前端工程,并可以打包代碼和靜態(tài)資源,使你的項(xiàng)目以最優(yōu)異的性能上線。針對(duì)痛點(diǎn)零配置,快速搭建繁瑣的開(kāi)發(fā)環(huán)境搭建。自適應(yīng)解決方案實(shí)現(xiàn)多終端顯示一致。 X-BUILD一套基于Webpack(v4.21.0)快速搭建H5場(chǎng)景開(kāi)發(fā)環(huán)境的腳手架,只需要幾分鐘的時(shí)間就可以運(yùn)行起來(lái)。X-BUILD是針對(duì)H5開(kāi)發(fā)的一套自動(dòng)化...

    GraphQuery 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<