摘要:新人上路搭建项目测试和配置测试最基本的依赖配置添加字符集过滤器解析返回数据静态资源不做处理解析返回数据测试中文测试踩坑记录测试中文测试尚未解决单元测试不知道怎么使用的配置最后代码分支代码分支
新人上路-搭建项目-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...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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开发的一套自动化...
阅读 1438·2021-09-30 09:57
阅读 1425·2021-09-09 09:33
阅读 2151·2021-09-04 16:40
阅读 1778·2021-09-01 10:50
阅读 3213·2021-09-01 10:31
阅读 2518·2019-08-30 15:56
阅读 2940·2019-08-30 15:44
阅读 3459·2019-08-29 17:29