C# Specflow步骤与wait for async API

C# Specflow步骤与wait for async API,c#,async-await,nunit,bdd,specflow,C#,Async Await,Nunit,Bdd,Specflow,我们正在尝试获得以下场景步骤,以在DoAyncStuff()方法中发生故障时中断测试: [Given(@"There is something")] public async Task GivenSomething() { await DoStuff(); } private async Task DoStuff() { await Task.Run(() => Thread.Sleep(1000)); throw new ApplicationException

我们正在尝试获得以下场景步骤,以在
DoAyncStuff()
方法中发生故障时中断测试:

[Given(@"There is something")]
public async Task GivenSomething()
{
    await DoStuff();
}

private async Task DoStuff()
{
    await Task.Run(() => Thread.Sleep(1000));
    throw new ApplicationException("Boom");
}
但实际上,在您使用
.Wait()
.Result
之前,它会让您愉快地进行绿色跑步:

[Given(@"There is something")]
public void GivenSomething()
{
    DoStuff().Wait();
}
问题似乎出现在NUnit生成的规范中,该规范如下所示:

public virtual void SomethingAsync()
{
    ...
    testRunner.Given("There is something", ...);
    ...
}
这似乎适用于以下代码:

public virtual async Task SomethingAsync()
{
    ...
    await this.ScenarioSetup(scenarioInfo);
    ...
}
上面的代码是手动编辑自动生成的文件,所以我实际上在寻找一种自动生成以下代码的方法

似乎是异步API的唯一可用选项,但实际上是Silverlight,据我所知,它使用某种API,而我们更倾向于使用原生C#wait关键字


是否有办法以本机方式处理
async/await
Is SpecFlow步骤?

在当前发布的版本(2.1)中不支持async和await,在v2.2中添加了(通过)支持,该版本可从获得,但尚未正式发布

[编辑]


2.2已经发布,支持异步等待测试。

看看发布版有什么更新吗?我安装了2017版的specflow,它似乎没有生成异步测试,但specflow nuget的版本是2.2。从生成的代码中可以看出,generator is 2.0在VS2017和SpecFlow 2.2.0与xUnit 2.2.0中存在相同的问题。异步测试(我编写的部分,而不是自动生成的代码)没有等待,流程立即进入下一步。我正在VS2017中运行SpecFlow 2.2.0和SpecFlow.xUnit 2.2.0,它按预期工作。可能会以问题的形式发布@SkorunkaFrantišek:-)我正在使用VS 2015和SpecFlow 2.2.1,当我用async和use Wait inside装饰一个步骤时,它会进入下一步。现在我正在使用.Result进行异步调用。@VargaTamas您是否确保步骤使用
异步任务
签名?我很肯定它能用。