Xiao Peng

My personal blog moves to xiaopeng.me , blogs about design patterns will be synced to here.
肖鹏,ThoughtWorks资深咨询师,目前关注于架构模式、敏捷软件开发等领域,并致力于软件开发最佳实践的推广和应用。
多次为国内大型企业敏捷组织转型提供咨询和培训服务,在大型团队持续集成方面具有丰富的经验。
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

关于TDD构造函数(From Maillist)

Posted on 2007-05-13 14:21  勇敢的鸵鸟  阅读(401)  评论(0编辑  收藏  举报

Frank:

大家好,不知道有没有人能帮我看看这个有些罗嗦的问题。(在这个列表中我是个新人,如果我的问题不合适请大家原谅。)

简单的说,在使用test-first的时候,我们应该怎么处理枚举变量?

既然,我们不应该在遇到red test之前写任何代码,下面这个例子应该怎么做?

Drink drink = new Drink(DrinkType.Cocktail);

接下来,我应该来写测试验证构造函数:

[Test]
public void Test_Constructor()
{
Drink d= new Drink(DrinkType.Cocktail);
Assert.IsNotNull(d);
}

可是,我是不是应该专门写一个测试来测试这个枚举参数呢?到底应该怎么处理?

Charlie

你做得似乎有些太快了。事实上,如果是我,我会先写一个这样的构造函数:

Drink d = new Drink();

当然,过一会儿,我可能想要知道这个饮料的类型了,我就写一个测试:

Assert.AreEqual("cocktail", d.DrinkType);或者Assert.AreEqual(DrinkType.Cocktail, d.DrinkType);

这个测试显然不能通过编译,我会写一点点代码,让它通过:

public string DrinkType
{
get{ return "cocktail"; }
}

只有等到我遇到第二种新的饮料类型,我才会需要那个构造函数。

至于你说的对于枚举类型的测试:枚举类型只是一个声明,并不包含真正的代码,所以不需要测试。