测试驱动开发 TDD ***
-
(1)什么是测试驱动开发?
测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法 -
(2)有什么特点?
先编写测试代码–主要逻辑
再写功能代码–再实现细节
通过测试来推动整个开发的进行
这有助于编写简洁可用和高质量的代码,并加速开发过程。
src\com\wzx\Demo04.java
虽然代码中报错,但是主要逻辑是清楚的,报错是因为类未实现,只要实现了,代码错误就自动修复了
public class Person {
public void eat(String food) {
System.out.println("吃..."+food);
int num = 1;
System.out.println(100/num);
}
public void run(int num) {
System.out.println("跑..."+num);
}
}
Junit 单元测试***
- (1)为什么使用Junit?
测试一个类的多个方法,如果使用main方法,不便利
细粒度测试 - (2)为什么Junit
JUnit是一个Java语言的单元测试框架。 - (3) junit是在极限编程和重构(refactor)中被极力推荐使用的工具
- (4)Junit的注解
@Before
@After
@Test
极限编程
要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。
重构
其好处和极限编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。
test\java\com\wzx\PersonTest.java
public class PersonTest {
private Person person;
//@Before标记的方法,运行在@Test之前,初始化
@Before
public void init(){
person = new Person();
System.out.println("init");
}
//@After标记的方法运行在@Test方法之后,销毁
@After
public void destory(){
System.out.println("destory");
person = null;
}
//@Test 在测试方法上加,类似main独立运行
@Test
public void testEat(){
System.out.println("testEat");
person.eat("汉堡");
}
@Test
public void testRun(){
person.run(1000);
}
}
点击 左侧绿色按钮即可运行
- 绿色表示没有异常
- 红色表示出现异常