zoukankan      html  css  js  c++  java
  • 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);
        }
      
  • 相关阅读:
    常用Docker命令
    Ubuntu16.04安裝最新Nvidia驱动
    (转)5分钟让你明白“软链接”和“硬链接”的区别
    Centos7 Zabbix3.2集群安装
    Kettle定时抽取两个库中的两个表到目标库SYS_OPLOG表
    Elasticsearch Java API—多条件查询(must)
    logstash采集tomcat日志、mysql错误日志
    让Logstash每次都从头读文件及常见问题
    logstash之multiline插件,匹配多行日志
    spring security积累
  • 原文地址:https://www.cnblogs.com/mogong/p/12723960.html
Copyright © 2011-2022 走看看