Specflow步骤等待异步API

问题描述 投票:9回答:1

我们试图通过以下方案步骤来打破测试,以防qazxsw poo方法中发生故障:

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

问题似乎出现在NUnit generated-spec中,如下所示:

[Given(@"There is something")]
public void GivenSomething()
{
    DoStuff().Wait();
}

这似乎与以下代码一起使用:

public virtual void SomethingAsync()
{
    ...
    testRunner.Given("There is something", ...);
    ...
}

上面的代码是手动编辑的自动生成的文件,所以我实际上正在寻找一种自动生成以下代码的方法。

public virtual async Task SomethingAsync() { ... await this.ScenarioSetup(scenarioInfo); ... } 似乎是asyncronous API唯一可用的选项,但实际上它适用于Silverlight,据我所知使用某种API,而我们更喜欢使用本机C#await关键字。

有没有办法处理本地The documentation是SpecFlow步骤?

c# async-await nunit bdd specflow
1个回答
10
投票

在当前发布的版本(2.1)版本中,不支持异步和等待,在q2.2中添加了支持(通过async/await),可以从this merged PR获得,但还没有正式版本。

[编辑]

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

© www.soinside.com 2019 - 2024. All rights reserved.