我正在使用Specflow,Visual studio 2015和Nunit。如果测试无法再次运行,我需要。我有
[AfterScenario]
public void AfterScenario1()
{
if (Test Failed and the counter is 1)
{
StartTheLastTestOnceAgain();
}
}
如何重新开始上一次测试?
答案 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
}
}