是否可以根据结果再次运行相同的specflow测试?

时间:2016-11-22 06:23:56

标签: c# testing specflow

我正在使用Specflow,Visual studio 2015和Nunit。如果测试无法再次运行,我需要。我有

[AfterScenario]
public void AfterScenario1()
{
    if (Test Failed  and the counter is 1)
    {
        StartTheLastTestOnceAgain();
    }
}

如何重新开始上一次测试?

2 个答案:

答案 0 :(得分:2)

在NUnit中有RetryAttribute(https://github.com/nunit/docs/wiki/Retry-Attribute)。看起来SpecFlow.Retry插件正在使用它(https://www.nuget.org/packages/SpecFlow.Retry/)。这个插件是第三方插件,我还没有使用它。所以不能保证这可以按你的意愿运作。

作为替代方案,您可以使用SpecFlow + Runner(http://www.specflow.org/plus/)。这个专业的跑步者可以选择重新运行失败的测试。 (http://www.specflow.org/plus/documentation/SpecFlowPlus-Runner-Profiles/#Execution - retryFor / retryCount配置值)。

完全披露:我是SpecFlow和SpecFlow +的开发人员之一。

答案 1 :(得分:0)

您可以始终在断言步骤中捕获失败,然后重试您的测试。类似的东西:

[Given(@"I'm on the homepage")]
public void GivenImOnTheHomepage()
{
    go to homepage...
}
[When(@"When I click some button")]
public void WhenIClickSomeButton()
{
    click button...
}
[Then(@"Something Special Happens")]
public void ThenSomethingSpecialHappens()
{
    var theRightThingHappened = someWayToTellTheRightThingHappened();
    var result = Assert.IsTrue(theRightThingHappened);
    if(!result)
    {
       thenTrySomeStepsAgainHere and recheck result using another assert
    }
}