TDD实践

####什么是TDD
TDD(Test-Driven Development)测试驱动开发,是敏捷开发中的一项核心实践和技术,也是软件开发过程中的应用方法。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,由测试代码确定需要编写什么产品代码。

####基本思路
通过测试来推动整个开发的进行,拿到需求之后,分析需求,列出测试点,然后写测试用例,为了使测试用例通过而编写功能代码,通过不断的迭代,使整个功能逐步完善。

这里写图片描述

TDD原则

独立性:用例各自独立,不相互依赖;
小步快跑:每次编写功能代码时,只为满足当前测试用例,这样做能有效降低实现功能的复杂度;
及时重构:测试用例通过之后,对结构不合理,重复的代码,应该及时进行代码重构。

需求
校验字符串str是否满足以下条件,校验通过返回true,校验失败分别提示错误信息
str不能为空
str必须包含特殊字符@
str长度为6-8位
分析需求后,我们将开始用测试驱动开发的模式实现此功能

StrTest.java

import static org.junit.Assert.*;

import org.junit.Test;

/**
 * @see 2018年8月22日下午8:49:08
 */

public class StrTest {

    /**
     * 测试用例1:字符串为空
     */
    @Test
    public void test01() {
        try {
            StrService strSer = new StrService();
            String str = "";
            strSer.checkStr(str);
        } catch (Exception e) {
            assertTrue(e.getMessage().equals("不能为空"));
        }
    }
    
    /**
     * 测试用例2:字符串必须包含'_'特殊符号
     */
    @Test
    public void test02() {
        try {
            StrService strSer = new StrService();
            String str = "2wew";
            boolean res = strSer.checkStr(str);
            assertTrue(!res);
        } catch (Exception e) {
            assertTrue(e.getMessage().equals("必须包含特殊符号'_'"));
        }
    }
    
    /**
     * 测试用例3:字符串长度必须是6-8
     */
    @Test
    public void test03() {
        try {
            StrService strSer = new StrService();
            String str = "2w_ew";
            boolean res = strSer.checkStr(str);
            assertTrue(!res);
        } catch (Exception e) {
            assertTrue(e.getMessage().equals("长度必须是6-8位"));
        }
    }
    
    /**
     *     测试用例4:满足所有条件,测试通过
     */
    @Test
    public void test04() {
        try {
            StrService strSer = new StrService();
            String str = "2w34_ew";
            boolean res = strSer.checkStr(str);
            assertTrue(res);
        } catch (Exception e) {
            assertTrue(e.getMessage().equals(""));
        }
    }
}

StrService.class 代码如下

/**

  • @see 2018年8月22日下午8:50:18
    */

public class StrService {

/**
 * 实现对字符串的校验
 * @param str
 * @throws Exception 
 */
public boolean checkStr(String str) throws Exception {
    if(str.equals("")) {
        throw new Exception("不能为空");
    }
    if(!str.contains("_")) {
        throw new Exception("必须包含特殊符号'_'");
    }
    if(str.length()<6||str.length()>8) {
        throw new Exception("长度必须是6-8位");
    }
    return true;
}

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值