FitNesse-FixtureCode_3

2011-06-30  徐磊 

前一篇  FixtureCode_2     后一篇   ClassPath

http://localhost:8888/FitNesse.UserGuide.FixtureCode

让多测试表共享一个普通对象

       Ok!让我们调整下StaticGame,使得它变的更彻底些。我们的下一个需求:

       “一旦游戏已经开始,不可以继续添加游戏玩家,也不可以删除任何游戏玩家。”

       为了达到测试目的,我们假设有个玩家掷出来的筛子数是6。当然,这应当发生在游戏进行中了。现在,我们将要查检这轮是哪个玩家掷出来的筛子(我们预期他是Al),并且核查游戏是否已经开始。注意这个夹具,为了运行的准确性,我们需要AddRemovePlayerFixture中是同一个Game对象。这些就是StaticGame所要实现的。

       测试表略

       现在,游戏已经开始,当我们添加新玩家时,将会发生错误(我们从addPlayer()的返回值可以得到),与此同时,我们在游戏中任然只有两个游戏玩家。

       测试表略

       最后,我们从游戏中踢出一个玩家,这是不允许的,当然运行结果是错误的:

       测试表略

       所述的内容都告诉你,如何去利用有序的测试表来建立和测试不同情况下的应用程序需求。

       点击Test按钮来试试结果如何。

REMOVEPLAYER()函数

       AddRemovePlayerFixture上的removePlayer()函数:

       代码略

       它使用也是StaticGame提供的Game实例,下面你还会发现GameTurnFixture方法也是使用了一样的实例。

       代码略

       最终,AddRemovePlayerFixtureGameTurnFixture重复的调用是一个Game对象。

       这是一种常见的模式。以某种方式,在一个测试页面上的FitNesse测试表分享同一个对象。这里当然不仅仅只有这一种方法来实现。

       注意下GameTurnFixture函数,它在所有的设置器后被调用,在所有的输出函数前被调用。

概要

  • 夹具就是我们点击Test按钮时,FitNesseSlim用来处理测试表的类。对于测试表里的每行数据,Slim使用设置函数来设定输入,然后调用输出函数。FitNesse使用返回值来决定输出表是现实绿色还是红色。
  • Slim通过Classpath设置的路径来找到你的夹具代码。
  • 夹具代码应尽可能的简单:它们仅仅在委托到应用程序代码和从应用程序代码获得返回值时被使用,就像是在处理增加玩家的测试表时、Slim使用AddRemovePlayerFixture在测试表和应用程序代码间传值时(GamePlayer)
  • l有时,夹具代码纠结于把输入的测试数据放在一起以及格式化输出结果,但是,夹具代码应当没有逻辑在里面。
  • 测试表经常需要去共享对象,我们已经阐明了使用静态对象来解决这个问题。当然你可以有自己的解决办法。

更多知识点

       如何去创建不同风格的测试表,已经如何使用夹具来处理它们,请阅读Slim    

前一篇  FixtureCode_2         后一篇   ClassPath
502°/5007 人阅读/2 条评论 发表评论

熊志男  2011-06-30

continue 呵呵


小窝  2011-07-06

同步至官方微博


登录 后发表评论