Agile Java 习题1--起步

《Agile Java》是一本Java开发的入门书籍,同时讲述测试驱动开发(TDD)。作者将自己定位为一名软件工匠,分享自己的实际开发经验。从今天开始决定看完《Agile Java 中文版》,并敲完所有的例子代码,做完每章后面的习题,并在这里记录下我写的习题。

 

第一章的习题是创建国际象棋的卒Pawn类的。
1、创建PawnTest的空测试类,尝试运行JUnit,结果是不能运行。因为我使用的是JUnit4,在JUnit4中测试类和普通类是一样的,当你给他的某个方法加上注解"@Test",标识出这个是测试;而不是像以前版本那样必须是TestCase的子类,并且使用特殊命名方式来标识测试方法。

 

 

public class PawnTest {
}

 

 

2、创建测试方法TestCreate。现在可以运行JUnit。并且可以看到JUnit的绿条。

@Test
public void testCreate() {
}

 

3、在testCreate中添加一个Pawn对象的代码。

@Test
public void testCreate() {
	Pawn pawn = new Pawn();
}

很明显这会导致编译错误,出现错误并不是问题,只要我们及时的解决掉他了。于是我们创建一个Pawn类。

 

public class Pawn {

}

 

 现在编译错误没有了。并且运行JUnit可以看到绿色条条。一切正常,下一步。

 

4、增加一个断言,判断我们新增的pawn是否默认白色的(预设默认的卒是白色的)。

 

@Test
public void testCreate() {
	Pawn pawn = new Pawn();
	assertEquals("white", pawn.getColor());
}

 

并在Pawn中创建方法getColor,保证能够正常编译:

 

public String getColor() {
	return null;
}

 

 运行JUnit,红条!!Failures:1.JUnit告诉我们测试有一个失败本来想应该是“white”,但是是“null”,我们要正视错误,用最简单的方法解决它。于是我们在getColor中返回“white”。

 

public String getColor() {
	return "white";
}

 运行JUnit,绿条重现。正常下一步。

 

5、在testCase中添加一个黑色的卒:

 

        Pawn blackPawn = new Pawn("black");
	assertEquals("black", blackPawn.getColor());

 为了解决编译错误,在Pawn中添加两个构造函数:

 

public Pawn() {
}

public Pawn(String color) {
}

 编译问题解决了,运行JUnit。红条!!Failures:1,解决之。因为我的getColor是直接返回的“white”,必须修改让其返回正确的颜色。修改之后的Pawn类如下:

 

private String color;

public Pawn() {
	this.color = "white";
}

public Pawn(String color) {
	this.color = color;
}

public String getColor() {
	return this.color;
}

 运行JUnit,见到绿条,下一步。

 

6、重构,将程序中的字符串定义为常量。在PawnTest里面添加:

 

final String white = "white";
final String black = "black";

 在Pawn里面添加:

 

static final String defaultColor = "white";

 并将程序里面直接手写的字符串修改为这几个常量。

 

这章的最终程序在附件里面。我的环境:windows,eclipse3.5,jdk1.6,JUnit4.5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值