关闭

从企业的运行价值链说起——我眼中的测试驱动开发(上)

发表于:2009-3-05 14:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张逸    来源:晴窗笔记

  仔细想想,实际上只有搜索和存储才是智能助理的职责所在,而定制不过是智能助理要运转的一个条件罢了。既然如此,从客户应用的顺序来考虑,我们应该先实现定制的功能。要定制类别,就应该具备类别类型,而定制类别这项功能,则应该由一个专门的控制器来承担责任。

  [SetupUp]

  public void InitObject()

  {

  Category cg1;

  Category cg2;

  CategoryContainer cgContainer;

  SmartController control;

  }

  [Test]

  public void TestCategory()

  {

  cg1 = new Category("SoftWare Engineering","TDD");

  cg2 = new Category("SoftWare Engineering","Design Pattern");

  cgContainer = new CategoryContainer();

  cgContainer.Add(cg1);

  cgContainer.Add(cg2);

  Assert.IsNotNull(cgContainer);

  Assert.AreEqual(cg1,cgContainer[0]);

  Assert.AreEqual(cg2,cgContainer[1]);

  }

  [Test]

  public void TestController()

  {

  control = new SmartController();

  Assert.IsNotNull(control);

  Assert.IsTrue(control.CustomizeCategories(cgContainer));

  }

  上面的测试代码完全从用户的应用角度来考虑的。要定制类别,必须具备类别类型Category,它应该实现一个带参的构造函数,传递主类别和子类别。由于定制的类别可能会很多,所以需要一个类别容器CategoryContainer。

  而定制类别,则由控制器SmartController完成。定制的方法CustomizeCategories()定制多个类别,并返回布尔型,以确定定制是否成功。通过上述的测试代码,写出相应的程序应该不难吧。

  接下来应该考虑搜索和存储功能了。在前面我提到,这两个功能应该是SmartAssistor类型的职责。先修改最初的测试代码:

  [Test]

  public void TestSmartAssistor()

  {

  SmartAssistor assistor = new SmartAssistor();

  Assert.IsNotNull(assistor);

  assistor.Search(control.Categaries);

  assistor.Store();

  }

  此时,我发现在写Search()和Store()方法的断言时,有些问题存在。这两个方法返回的结果应该是什么?是布尔值吗?那么搜索得到的结果呢?存储后形成的文件呢?对于用户而言,是否只需要这两个行为呢?

  仔细分析,我认为,Search()和Store()方法返回布尔值是可行的,但Search()还应该返回搜索结果。Store()方法也应该指定存储的路径和文件的格式。而用户不仅仅需要搜索和存储,同时还应该提供显示的功能。所以,上面的测试代码需要完善:

  [Test]

  public void TestSmartAssistor()

  {

  SmartAssistor assistor = new SmartAssistor();

  Assert.IsNotNull(assistor);

  SearchResult result = new SearchResult();

  Assert.IsTrue(assistor.Search(control.Categaries,out result));

  Assert.IsTrue(assistor.Store(result,@"D:\Smart Assistor\","result.xml"));

  assistor.List(result);

  }

  此时根据测试代码写出的程序,应该说就具备个人智能助理的雏形了(所谓智能,还应具备自动搜索,自动匹配,自动分类等诸多功能,本文只是根据该项目提出TDD的一些观点,因此这些功能省略)。

相关阅读:

从企业的运行价值链说起——我眼中的测试驱动开发(下)

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号