TDD实践
程序员文章站
2022-07-13 09:54:31
...
什么是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;
}
}
“`
上一篇: Open3d学习计划——高级篇 3(点云全局配准)
下一篇: NGINX解决跨域