【发布时间】:2012-02-23 12:00:58
【问题描述】:
我已经使用 SpecFlow 编写了几个长期运行的端到端集成测试,但由于 Nunit 超时,它们都失败了。
将 [Timeout(x)] 属性添加到 TestFixture 可以解决问题,但当然每次更新功能时都会被覆盖。
如何以 SpecFlow 尊重的方式删除或延长超时?
【问题讨论】:
标签: .net testing nunit integration-testing specflow
我已经使用 SpecFlow 编写了几个长期运行的端到端集成测试,但由于 Nunit 超时,它们都失败了。
将 [Timeout(x)] 属性添加到 TestFixture 可以解决问题,但当然每次更新功能时都会被覆盖。
如何以 SpecFlow 尊重的方式删除或延长超时?
【问题讨论】:
标签: .net testing nunit integration-testing specflow
我只是开始了解 Specflow,但您能否实现一个自定义标签来做到这一点?也许您可以将它们放在 BeforeScenario 或 BeforeFeature 挂钩中?
【讨论】:
我们所说的运行时间有多长? > 1 分钟? 是否必须是完整的集成测试?
我正在阅读黄瓜书 - 它建议您尽可能在 GIVEN 步骤中作弊,以减少运行所需的时间。 GIVEN 步骤正在描述过去。
我的申请表需要填写 5 个部分,并且只有在完成所有部分后才能提交。我想测试提交应用程序时发生的一些功能,最初我的 GIVEN 语句通过 Selenium 驱动网页以完成表单的所有 5 个部分以便我可以提交,我将其更改为单个 SQL 命令来设置应用程序所有要完成的部分的状态。这缩短了运行时间大约一分钟。
我测试的是提交行为,填写部分测试在其他地方完成。
【讨论】:
正如@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...
【讨论】: