Fitnesse - 我们可以拆分一个大表,这个表依赖于很多值而没有中间结果吗?

时间:2011-06-15 06:50:02

标签: testing fitnesse

过去一个月左右我刚刚开始与fitnesse合作。

我有大约50-60个不同的输入来驱动结果。到目前为止,我一直无法找到任何可以捕获和留出的中间结果。

以折扣计算为例,需要通过三页或四页向导捕获许多值。然后将这些用于计算折扣。但是,有一项服务可以获取所有输入并计算折扣。 还需要说明折扣计算的组成部分。

作为一个具体示例,假设用户可以在UI中选择任何或所有选项A,B,C,并且每个选项都具有关联的某些值,用户在向导中输入这些值,这些值将进入计算一个折扣。所有选项可能都与所有属性无关。我的fitnesse表需要看起来像:

             Property A     Property B        Property C   Expected value
   Option A        5                6                n/a          5
   Option B       n/a              n/a               10          2
   Option C       10               n/a               10          3

(不适用表示该属性不适用于该选项)

这里的问题是我有一个要调用的服务,无法更改,这将选择整个选项和属性集,并返回总折扣,以及每个选项的单个折扣组件选择。 用户希望在fitnesse页面上测试各个组件。

对于一小部分属性和选项,这不应该是一个太大的问题,但我可能会看到大约15个或更多选项,总共超过50个属性,而不是所有属性适用于每个选项。

有什么方法可以把它分成多个表吗?有谁可以提供任何关于如何处理此问题的建议?我在这里担心测试的性能和可读性。我还没有开始,但是在开始之前我试图看看是否有其他方法,因为我并不熟悉这里可能提供的所有可能的选项,并且只有一个巨大的桌子听起来不太好。

提前致谢!!

感谢, 苏布

1 个答案:

答案 0 :(得分:1)

我一直在研究的一个选项是定义我自己的子表:

Main Table

 SubTable:com.test.Table1
                   Property1         Property2   
      Option A      5                    6
      Option D      10                   7

 SubTable:com.test.Table2
                    Property3         Property4
      Option B       12                n/a
      Option C       15                 10

MainTable是实际的fitnesse表。 “SubTable”只是一个字符串,我用作子表之间的分隔符,以查找新子表的开头。在“SubTable”之后,我可以使用通用路由并定义需要实例化的类来处理它。

为了保持通用性,尽可能接近通常的fitnesse,子表类的行为也应该与普通fitnesse表的行为完全相同,使用doTable()方法。

MainTable.java中的逻辑解析各个行,将它们分组到子表中,使用反射实例化各个处理类,并将行传递给doTable()调用。然后子表将执行自己的逻辑和验证,然后返回通过/失败行。然后,MainTable.java将整理所有子表返回的所有结果并显示它们。

到目前为止,这似乎对我有用。如果子表行被正确分组,则列扩展确实会减少很多。

如果你能想出比这更好的方法,请有人告诉我。