如何最好地切换特定的Fitnesse测试?

时间:2017-02-05 21:57:57

标签: toggle fitnesse featuretoggle

可以有条件地打开或关闭特定的fitnesse测试吗?

Fowler/Hodgson terminology中,我们正在使用“Release Toggles” - 即切换允许在我们的测试和专业环境中禁用更改,直到准备好黄金时间。我们不希望这些功能中的故障影响到pro的发货,因此对这些测试的结果不感兴趣。从这个意义上讲,CDP管道将切换设置为“PRO”配置,以保持验收测试的快速和集中。那么如何让fitnesse忽略与切换相关的测试?

我看到了相关的答案:How should feature toggles be set in tests run in continuous integration?表示此用户测试了切换的所有方面,但这对我们来说通常是不可能的 - 例如想象一个功能需要重新启动应用程序来更改由于DI或其他任何原因导致的切换(例如,因为该功能需要连接不同的Web控制器) - 这对于fitnesse来说是一件非常困难的事情..使得测试速度慢并且正在测试功能我们实际上并不需要测试(还)。

因此,我们希望能够开发功能(在切换后面)和测试,灯具(标有相同的切换),当我们准备启用它们时,将它们轻弹以运行CI管道。类似的东西:

  1. 决定功能需要切换,因此创建一个TOG123-change-api-behavior
  2. 将切换添加到所有代码都可以看到的中央切换系统
  3. 在CI环境的配置中将切换设置为“false”
  4. 开发切换代码背后的功能和fitnesse测试
  5. 准备将CDP设为真时
  6. 通过测试时,请发送给专业人员
  7. 及时..通过字面搜索TOG123并清理混乱来移除切换..
  8. 我看不出一个好的答案是如何用条件保护特定的fitnesse测试(即新测试将有一个时间:TOG123.enabled和旧测试将有一个时间:TOG123.disabled)。 Fitnesse对我来说似乎有些尴尬。标签是我正在寻找的吗?套房看起来太宽了......

1 个答案:

答案 0 :(得分:1)

根据您的描述标签似乎是您正在寻找的。它们允许您标记新功能的测试,并选择在您执行的运行中包含或排除这些测试。

在旁注:如果功能是真正的'切换',即它们可以在生产中启用而无需新版本,我建议测试切换的所有方面;否则你不知道启用切换是否真的是一个好/安全的事情。如果新功能预计不会“生产就绪”,因此在部署之前不保证测试:为什么要将它们包含在您发布的产品版本中?在这种情况下,我建议您将这些新功能保留在一个单独的分支中,该分支尚未合并到开发/主站。然后,您可以在相同的(或类似的,如果测试位于不同的存储库中)维护/开发这些功能的测试。这可以防止生产中不应该使用的复杂性/代码,并且还可以防止以后需要“清理混乱”:清理是分支的一部分。合并分支时,会添加,测试新功能,并立即删除现已过时的测试/代码。这当然需要能够根据分支运行/测试您的系统,但这是您在持续交付时所拥有的。