• TDD的简述及环境配置


    TDD的简述及环境配置

    描述

    • TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程

    优点

    • 写出来的代码bug会比较少

    缺点

    • 测试代码几乎是开发代码的一到两倍之多

    配置环境

    • 在测试类上添加@RunWith和@SpringBootTest注解
      • @RunWith(SpringRunner.class)
        • 用SpringRunner来运行
      • @SpringBootTest(classes = net.seehope.security.demo.DemoApplication.class)
        • 对项目进行单元测试
      • 代码
      •   @RunWith(SpringRunner.class)
          @SpringBootTest(classes = net.seehope.security.demo.DemoApplication.class)
        
    • 测试类中注入WebApplicationContext类
      • 什么是WebApplicationContext
        • WebApplicationContext,是继承于ApplicationContext的一个接口,扩展了ApplicationContext,是专门为Web应用准备的,它允许从相对于Web根目录的路径中装载配置文件完成初始化。
      • 作用
        • 从WebApplicationContext中可以获得ServletContext的引用,整个Web应用上下文对象作为属性放置到ServletContext中,以便Web应用环境可以访问Spring应用上下文
      • 代码
      •   @Autowired
          private WebApplicationContext context;
        
    • 引入MockMvc类
      • 为何使用MockMvc?
        • 对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入了MockMVC。
        • MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
      • 代码
      •   private MockMvc mockMvc;
        
    • 在测试类的前置通知里用MockMvcBuilders.webAppContextSetup(context).build();构建MockMvc
      • 代码
      •   @Before
          public void setUp(){
              mockMvc= MockMvcBuilders.webAppContextSetup(context).build();
          }
        

    编写测试方法

    • 在方法头部添加@Test注解
    • 输入测试API
    • 指定数据格式(dataType)
    • 传入参数
    • 规定响应数据的结果
    • 代码如下
    •   @Test
        public void whenQueryAllUserSuccess() throws Exception {                                                          
            //输入测试API
            String result=mockMvc.perform(MockMvcRequestBuilders.get("/test/getUser")
                    //MediaType指的是要传递的数据的MIME类型,MediaType对象包含了三种信息:type 、subtype以及charset
                    .contentType(MediaType.parseMediaType("application/json"))
                    //向API传入变量
                    .param("username","wxb")
                    .param("password","asd")
            )
                    //规定响应数据的结果
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(5))
                    .andExpect(MockMvcResultMatchers.jsonPath("$[0].username").value("username0"))
                    .andReturn().getResponse().getContentAsString();
              //输出测试结果
              System.out.println(result);
        }
      
  • 相关阅读:
    H5项目开发分享——用Canvas合成文字
    《JavaScript设计模式 张》整理
    Linux常用指令指南,终端装逼利器
    飞起来的正则表达式
    JavaScript特性(attribute)、属性(property)和样式(style)
    使用 Nginx 提升网站访问速度
    centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
    用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面
    mysql字符集调整总结
    因为smb和nfs挂掉导致客户端开机启动不了
  • 原文地址:https://www.cnblogs.com/mogong/p/12723960.html
Copyright © 2020-2023  润新知