美文网首页
新人上路-搭建项目-springweb-controller测试

新人上路-搭建项目-springweb-controller测试

作者: seal_de | 来源:发表于2017-05-29 11:14 被阅读0次

新人上路-搭建项目-springweb-controller测试

maven和gradle配置

  • 测试controller最基本的依赖
    • maven

        <!-- main framework begin -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>${jackson.version}</version>
        </dependency>
        <!-- main framework end -->
      
        <!-- web begin -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
        <!-- web end -->
      
        <!-- test begin -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-core</artifactId>
          <version>${mockito.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>
        <!-- test end -->
      
    • 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<HttpMessageConverter<?>> converters) {
          MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    
          List<MediaType> 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<HttpMessageConverter<?>> converters) {
          MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    
          List<MediaType> 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

  • 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 的配置

最后

相关文章

  • 新人上路-搭建项目-springweb-controller测试

    新人上路-搭建项目-springweb-controller测试 maven和gradle配置 测试control...

  • 新人上路-搭建项目-maven和gradle

    新人上路-搭建项目-maven和gradle 前段时间因为毕设需要,第一次搭建项目,记录一下踩过的坑。但不记录诸如...

  • 03搭建MyBatis

    搭建MyBatis项目 1、下载MyBatis、创建项目、导包; 2、创建测试用例,测试数据库、测试Bean对象;...

  • 软件测试 | 项目实战 1

    项目测试说明 在一般工作中 搭建测试环境 快速熟悉项目 编写测试计划 编写测试方案 设计、编写、执行测试用例 测试...

  • 新人上路~

    我临摹的也是无fuck说了。。QwQ,废话不多说了。。。放图。。【希望没有把王大眼画毁。。】 哦哦,对了。。这里新...

  • upload-labs(Pass01)

    本次搭建upload-labs靶机进行File Upload测试 测试项目:Pass01[FE check] 测试...

  • vue项目 单元测试

    1 vue 项目搭建之后看目录结构 2.搭建一个简单的测试demo待测试文件 MyComponent.vue ...

  • 测试各阶段流程详解

    iweb 测试流程: 1、搭建测试环境 2、快速熟悉项目 3、 编写测试计划 4、编写测试方案 5、设计...

  • OWASP之Simple ASP.NET Forms简单测试

    本次搭建OWASP靶机进行XSS测试 测试项目:ASP.NET Froms 测试1:Simple ASP.NET ...

  • OWASP之Bricks(File Upload)简单测试

    本次搭建OWASP靶机进行File Upload测试 测试项目:Bricks 测试介绍:此靶机主要练习 文件上传 ...

网友评论

      本文标题:新人上路-搭建项目-springweb-controller测试

      本文链接:https://www.haomeiwen.com/subject/wdpkfxtx.html