gpt4 book ai didi

c# - 如何将 Specflow 步骤标记为 'Obsolete' 以支持渐进式、向后兼容的重构

转载 作者:行者123 更新时间:2023-11-30 21:39:50 25 4
gpt4 key购买 nike

由于业务术语中的一些术语发生变化,我目前正在重构一个中型应用程序。我们有大约 121 个 SpecFlow 功能文件需要更改。

我喜欢你如何在 C# 中“弃用”API,首先作为警告:

[Obsolete("Use MyClass.NewMethod instead")]
public void OldMethod() { }

然后编译错误:

[Obsolete("Use MyClass.NewMethod instead", true)]
public void OldMethod() { }

如果 SpecFlow 步骤有这种功能就好了:

[When("I old foo", Obsolete = true)]
[When("I new foo")]
public void WhenIFoo() { }

有没有什么方法可以将 SpecFlow 中的步骤标记为过时,以便其他开发人员知道需要在他们的功能文件中更改这些步骤,但不会阻止他们编写和运行测试?作为补充奖金,有没有办法选择性地导致编译器或测试运行失败?

最佳答案

version v2.4 开头, SpecFlow 尊重 [Obsolete]步骤绑定(bind)的属性。

对于您的示例,您可能会像这样使用它:

[When("I old foo")]
[Obsolete("you should use WhenIFoo instead")]
public void WhenIOldFoo() { }

[When("I new foo")]
public void WhenIFoo() { }

作为使用此类步骤的默认行为,会发出警告。利用 obsoleteBehavior SpecFlow 上的属性 <runtime>配置,你可以改变它,特别是。失败的测试执行:

<specFlow>
...
<runtime obsoleteBehavior="Error" />
</specFlow>

与此同时 Wiki-page for the Configuration已更新以记录该功能。

关于c# - 如何将 Specflow 步骤标记为 'Obsolete' 以支持渐进式、向后兼容的重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com