过去一个月左右我刚刚开始与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个属性,而不是所有属性适用于每个选项。
有什么方法可以把它分成多个表吗?有谁可以提供任何关于如何处理此问题的建议?我在这里担心测试的性能和可读性。我还没有开始,但是在开始之前我试图看看是否有其他方法,因为我并不熟悉这里可能提供的所有可能的选项,并且只有一个巨大的桌子听起来不太好。
提前致谢!!
感谢, 苏布
答案 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将整理所有子表返回的所有结果并显示它们。
到目前为止,这似乎对我有用。如果子表行被正确分组,则列扩展确实会减少很多。
如果你能想出比这更好的方法,请有人告诉我。