随笔 - 3, 文章 - 152, 评论 - 17, 引用 - 0
数据加载中……

TDD(1)--转自http://www.blogjava.net/yandazhi

TDD是这样一种设计风格

Maintain an exhaustive suite of Programmer Tests

维护一套程序员测试的框架

No code goes into production unless it has associated tests

除非它已结合测试,产品不写入任何代码

Write the tests first

先写测试

Tests determine what code you need to write

测试决定你需要写什么代码

public void testEmptyList() {
    MovieList emptyList 
=newMovieList();
    assertEquals(
"Empty list should have size of 0"0, emptyList.size());
}



要通过上面的测试,你必须创建一个类MovieList,和一个方法size();

(eclipse的快速修复功能能帮你搞定哦。看来先写测试还是很方便的*^^*)

让计算机来告诉你

你需要增加类或者方法,编译器会告诉你。(eclipse会向你抱怨有cannot be resolved 的)

下面看看代码的演进

public void testRating() {
  assertEquals(
"Bad average rating.",4,starWars.getAverageRating());
}



public void testRating() {
  starWars.addRating(
3);
  starWars.addRating(
5);
  assertEquals(
"Bad average rating.",4,starWars.getAverageRating());
}


public void testRating() {
  Movie starWars 
= new Movie("Star Wars");
  starWars.addRating(
3);
  starWars.addRating(
5);
  assertEquals(
"Bad average rating.",4,starWars.getAverageRating());
}



非常有意思,和我们平时写代码的顺序相反

下面看看getAverageRating();

public int getAverageRating() {
  
return 4;
}


public int getAverageRating() {
  
return (3 + 5/ 2;
}



private int totalRating = 0;


public void addRating(int newRating) {
  totalRating 
+= newRating;
}




public int getAverageRating() {
  
return totalRating / 2;
}



private int numberOfRatings = 0;

public void addRating(int newRating) {
  totalRating 
+= newRating;
  numberOfRatings
++;
}


public int getAverageRating() {
  
return totalRating / numberOfRatings;
}



实际上,每次变化之后都重新编译和运行这个测试。

Agile Modeling and TDD


采用XP(极限编程)的项目都采用了TDD的辅助手段。建模(modeling)是XP当中很重要的的一个部分。XP开发者使用用户叙述(user stories) ,用户叙述是清晰的敏捷模型。

创建敏捷模型能够帮助我们TDD工作,这是因为,他能揭示我们需要的测试。一个敏捷模型草图的背后总是隐含着这样的思考“我怎样来测试他”,这将导致一个新的测试案例。

posted on 2005-07-25 12:26 阅读(216) 评论(0)  编辑  收藏 所属分类: Test-Driven Development


只有注册用户登录后才能发表评论。


网站导航: