java TDD

TDD(测试驱动开发)是一种引入大量底层反馈的技术,它能持续地测试,确保我们编写正确的代码,并快速指出有问题的代码。

TDD要为每一段代码编写测试用例,而且要测试先行,测试用例用来定义代码需要做什么。

 

开发步骤中的一次循环

1.用代码编写一个规格说明,要符合单元测试的形式。

2.描述测试失败

3.编写代码,实现规格说明

4.测试通过

5.小型的重构,优化代码

 

TDD的每个循环非常短,可以快速得到反馈。采用这种持续、渐进的开发方式,一直针对整个系统运行所有的测试,可确保新增的代码不会破坏系统中其它的任何代码,大大降低了维护成本。

 

准备工作:安装MyEclipse、JUnit、Ant,正确配置环境变量。

下面的例子,包括2个业务类,2个对应的测试类,以及1个测试套件

public class Student {
 private String name;
 Student(String name){
  this.name = name;
 }
 public String getName() {
  return name;
 }
}
//继承自一个TestCase类,用来测试Student

import junit.framework.TestCase;

public class StudentTest extends TestCase{

//测试方法必须声明为public,返回值必须为void

 public void testCreat(){               //方法的名字必须以小写test为前缀
  final String firstStudentName = "rio";
  Student student = new Student(firstStudentName);
  String studentName = student.getName();
  assertEquals(firstStudentName,studentName);     //断言,确保第一个参数与第二个参数相同
 }
}

public class CourseSession {
 private String department;
 private String number;
 private int numerofStudents;
 public CourseSession(String department,String number) {
  this.department = department;
  this.number = number;
  numerofStudents = 0;
 }
 String getDepartment(){
  return department;
 }
 String getNumber(){
  return number;
 }
 int getNumberOfStudents(){
  return numerofStudents;
 }
 void enroll(Student student){
  numerofStudents = numerofStudents + 1;
 }
}

import junit.framework.TestCase;

public class CourseSessionTest extends TestCase{
 private CourseSession session;
 public void setUp(){       //JUnit将在执行每个测试方法之前,先执行setUp方法中的代码
  session = new CourseSession("java","60");
 }
public void testCreate(){
    CourseSession session = new CourseSession("java","60");
    Student student1 = new Student("saber");      //此处Student对象的生命周期和 testCreate()的执行周期相同
    Student student2 = new Student("mio");   
    session.enroll(student1);   
    session.enroll(student2);   
    assertEquals("java",session.getDepartment());
    assertEquals("60",session.getNumber());
    assertEquals(2,session.getNumberOfStudents());  
 }
 public void testEnrollStudents(){
     ……
 }
}

 //测试套件,能够让一套测试一起运行

import junit.framework.TestSuite;

public class AllTests {
 public static TestSuite suite(){
  TestSuite suite = new TestSuite();
  suite.addTestSuite(StudentTest.class);   //增加测试
  suite.addTestSuite(CourseSessionTest.class);
  return suite;
 }
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值