我使用SpecFlow编写了几个长期运行的端到端集成测试,但由于Nunit超时而导致它们失败。
将[Timeout(x)]属性添加到TestFixture可以解决问题,但每次更新功能时都会被覆盖。
如何以SpecFlow尊重的方式删除或延长超时?
答案 0 :(得分:1)
我只是了解Specflow,但您是否可以实现可以执行此操作的自定义标记?也许您可以将它们放在BeforeScenario或BeforeFeature钩子上?
答案 1 :(得分:1)
我们谈论多长时间? > 1分钟? 它必须是完整的集成测试吗?
我正在阅读黄瓜书 - 它建议你尽可能地为你的GIVEN步骤作弊,以减少运行时间。 GIVEN步骤描述了过去。
我有一个申请表,有5个部分要完成,只有在完成所有部分后才能提交。我想测试在提交应用程序时发生的一些功能,最初我的GIVEN语句通过Selenium驱动网页完成表单的所有5个部分以便我可以提交,我将其更改为单个SQL命令来设置应用程序要完成的所有部分的状态。这比运行时间短了一分钟。
我测试的是提交行为,填写部分测试是在其他地方完成的。
答案 2 :(得分:1)
正如@DisscCoder所说, 将标记类别添加到要素文件中的方案,并添加一个在钩子类中匹配的钩子.... SpecFlow为字符串匹配的所有场景运行前场景代码钩子代码。
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...