.net 从SpecFlow设置Nunit TimeoutAttribute

.net 从SpecFlow设置Nunit TimeoutAttribute,.net,testing,nunit,integration-testing,specflow,.net,Testing,Nunit,Integration Testing,Specflow,我已经使用SpecFlow编写了几个长时间运行的端到端集成测试,但是由于Nunit超时,它们失败了 将[Timeout(x)]属性添加到TestFixture解决了这个问题,但当然,每次更新功能时都会被覆盖 如何以SpecFlow尊重的方式删除或延长超时?我只是开始了解SpecFlow,但您能否实现一个自定义标记来实现这一点?也许你可以把这些放在BeforeCasenario或BeforeFeature挂钩上?我们谈论的是多久一分钟? 它必须是一个完整的集成测试吗 我在读《黄瓜》这本书——它建议

我已经使用SpecFlow编写了几个长时间运行的端到端集成测试,但是由于Nunit超时,它们失败了

将[Timeout(x)]属性添加到TestFixture解决了这个问题,但当然,每次更新功能时都会被覆盖


如何以SpecFlow尊重的方式删除或延长超时?

我只是开始了解SpecFlow,但您能否实现一个自定义标记来实现这一点?也许你可以把这些放在BeforeCasenario或BeforeFeature挂钩上?

我们谈论的是多久一分钟? 它必须是一个完整的集成测试吗

我在读《黄瓜》这本书——它建议你尽可能多地作弊,以减少事情运行所需的时间。给定的步骤描述了过去

我有一份申请表,有5个部分需要填写,只有在所有部分填写完毕后才能提交。我想测试提交应用程序时出现的一些功能,最初我给出的语句是通过Selenium驱动网页完成表单的所有5个部分,以便我可以提交,我将此更改为单个SQL命令,以设置所有部分的应用程序状态以完成。这缩短了大约一分钟的运行时间

我测试的是提交行为,填写部分测试在别处进行。

正如@disccorder所说, 将标记类别添加到功能文件中的场景中,并添加与钩子类匹配的钩子。。。。 SpecFlow为字符串匹配的所有场景运行before场景代码钩子代码

namespace ClassLibrary1
{
    [Binding]
    public class Hooks1
    {               
        [BeforeScenario("LongTest")]
        public void BeforeScenario()
        {
             // Code to set Nunit timeout
        }                         
    }
}

小黄瓜:

@LongTest
Scenario: Calc Pi to 1m digits (long)
    Given I am computing PI
    And my precision is 1 million digits
    Then my result is 3.14...

您可以提出一个观点,但在这个特殊的案例中,我稍微滥用了SpecFlow作为编写端到端测试的快速方法。对我来说,重点是尽可能少地模仿这个特定的用例。@mavnn,我认为我是唯一一个在“好”的时候写“可以”的人。这是我第一次看到不是我。当然,除非人们经常这样做,但我没有注意到这一点,因为我自己也这么做。我现在想得太多了。@Holf-不,我总是这样;我把它称为拼音打字,因为我很少用手写:)。任何听起来与另一个词相似的词都是公平的,最糟糕的是拼写检查没有帮助!老实说,我不知道,事实上,我已经有一年多没有使用SpecFlow了,因为我换了雇主。不过,新成员刚刚开始使用它,所以我可能很快就会试用它。[BeforeCasenario(“标记名”)这不起作用,因为他正在寻找添加NUnit属性“Timeout”