嵌套SuiteSetUps的替代选择,可保持顺序

时间:2019-06-14 12:10:49

标签: fitnesse

我们有一个FitNesse / HSAC项目,其中包含大量测试,这些测试的结构基本上如下:

  • TopSuite
    • SubSuite1
      • [测试]
    • SubSuite2
      • [测试]
      • SuiteSetUp
    • SubSuite3
      • [测试]
    • SuiteSetUp

SubSuite2的SuiteSetUp使用JsonHttpTest执行特别慢的GET请求,并且SubSuite2中的所有测试都会检查该请求的响应。我们选择在SuiteSetUp中执行该请求,因为在所有这三种情况下,FitNesse都会在相关测试之前立即运行该请求:

  1. 分别运行SubSuite2的一项测试时
  2. 作为套件运行SubSuite2时
  3. 作为套件运行TopSuite时

但是,这样嵌套SuiteSetUps会更改FitNesse issue #131中报告的测试执行顺序,该顺序已作为WONTFIX关闭。在我们的情况下,这种顺序更改是不可取的,因为它会使测试报告难以阅读/浏览,并使我们和我们为其编写测试的客户感到困惑。无论我们如何运行测试,我们都希望保持执行顺序,同时最多仍执行一次缓慢的请求。

我想出的可能解决方案是:

  • 将嵌套的SuiteSetUp替换为一个测试,该测试的名称要排在该套件中的所有其他测试之前。这样,它可以在适当的时候执行,而无需更改执行顺序,但是仅在情况2和3下执行。
  • 扩展JsonHttpTest使其能够缓存响应,以便该请求仅实际执行一次。这适用于所有三种情况,但是需要对Java代码进行一些更改,这些更改可能会在更新HSAC *时中断。
  • 请注意,将缓慢的GET请求移至全局SuiteSetUp并不可取,因为仅在SubSuite2外部运行测试时也会执行该请求
  • 请注意,将SubSuite2的所有测试都合并在一个测试中也是不希望的,因为在此套件中执行的检查数量足够大,以致于这种测试难以操作且缓慢。

我不禁感到,应该有一种方法可以在没有Java编码的情况下解决所有这三种情况。我在Google上进行了广泛的搜索,但找不到任何合适的解决方案。我已经花了好几个小时思考这个问题,所以从外部角度考虑是最受欢迎的:)

*:另外,我们想| show | response |某个地方,以便我们在发生错误时进行调试,但是响应非常大,以至于显示它需要花费FitNesse数秒的时间。仅在SuiteSetUp中显示响应即可轻松找到,同时最大程度地减少了延迟,而此解决方案使在哪里显示响应变得不那么简单

1 个答案:

答案 0 :(得分:0)

FitNesse 20190628(及更高版本)应该可以实现,并将!define ALL_UNCLE_SUITE_SETUPS {true}添加到顶级套件中