摘要:新人上路搭建項目測試和配置測試最基本的依賴配置添加字符集過濾器解析返回數據靜態資源不做處理解析返回數據測試中文測試踩坑記錄測試中文測試尚未解決單元測試不知道怎么使用的配置最后代碼分支代碼分支
新人上路-搭建項目-springweb-controller測試 maven和gradle配置
測試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[]{"/"}; } /** 添加字符集過濾器 **/ @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返回數據 **/ @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); } /** 靜態資源不做處理 **/ @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返回數據**/ @Override public void configureMessageConverters(List測試controller> 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); } }
controller
@RestController public class HomeController { @RequestMapping("/") public String home() { return "home"; } @RequestMapping("/cn") public String cn() { return "中文測試"; } @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測試
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("中文測試")); } @Test public void testObject() throws Exception { mockMvc.perform(get("/object") .accept(MediaType.APPLICATION_JSON_UTF8)) .andDo(print()) .andExpect(status().isOk()); } }尚未解決
單元測試不知道怎么使用 WebConfig 的配置
最后代碼(springmvc dev1分支): http://git.oschina.net/sealde...
代碼(springboot dev1分支): https://git.oschina.net/seald...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67140.html
摘要:新手上路搭建項目是一個接口文檔軟件界面如下添加這里使用版本可以正常使用配置文件測試新手上路。 新手上路-搭建項目-springboot-swagger2 swagger2 是一個接口文檔軟件 界面如下 showImg(https://segmentfault.com/img/bVOoim); gradle添加 compile(io.springfox:springfox-swagger...
摘要:雖然還不夠,但是開始了。一步步搭建框架項目名稱一開始我做的次是是的一開始什么也沒做,除了從和上注冊了一個叫做的庫然后在我們還沒有開始寫代碼的時候版本就已經是這個速度好快。。生成項目框架為了簡化這一個痛苦的過程,我們還是用。 從開始打算寫一個MV*,到一個簡單的demo,花了幾天的時間,雖然很多代碼都是復制/改造過來的,然而It Works(nginx的那句話會讓人激動有木有)。現在他叫...
摘要:它可以讓你在沒有任何構建工具例如或等工具配置經驗的情況下,幫你快速生成一個完整的前端工程,并可以打包代碼和靜態資源,使你的項目以最優異的性能上線。針對痛點零配置,快速搭建繁瑣的開發環境搭建。自適應解決方案實現多終端顯示一致。 X-BUILD一套基于Webpack(v4.21.0)快速搭建H5場景開發環境的腳手架,只需要幾分鐘的時間就可以運行起來。X-BUILD是針對H5開發的一套自動化...
閱讀 1459·2021-09-30 09:57
閱讀 1466·2021-09-09 09:33
閱讀 2220·2021-09-04 16:40
閱讀 1792·2021-09-01 10:50
閱讀 3237·2021-09-01 10:31
閱讀 2539·2019-08-30 15:56
閱讀 2970·2019-08-30 15:44
閱讀 3475·2019-08-29 17:29