SpecFlow icon indicating copy to clipboard operation
SpecFlow copied to clipboard

Hooks async await support

Open xmegacorel opened this issue 4 years ago • 5 comments

It's possible to add support async/await for any kind of Hooks. I have some case to setup specflow tests.

  1. I want to start my services in docker-compose env
  2. => I have some code that process in loop to ping all services, I have to wait with timeout that all services will startup and give me /version or /healthz good response. So, in brief I have this code: [BeforeTestRun] public static Task BeforeTestRun() { ..... // to check that code below execute only once ..... PermissionService.SetUpAuthorizedUserRoleAsync(FindServiceUrl(Names.PermissionService)).GetAwaiter().GetResult(); }

async Task SetUpAuthorizedUserRoleAsync(..) { // for example var tasks = services.Select(x => checker.CheckAsync(url)).ToList(); await Task.WaitAll(tasks); // if some task fail, test engine don't respond. // but if I change code that: Task.WaitAll(tasks).GetAwaiter().GetResult(); // ok }

SpecFlow Version:

  • [*] 3.1

Used Test Runner

  • [ ] SpecFlow+Runner
  • [ ] MSTest
  • [ ] NUnit
  • [*] Xunit

Version number: Version=2.4.1

Project Format of the SpecFlow project

  • [ ] Classic project format using packages.config
  • [ ] Classic project format using <PackageReference> tags
  • [*] Sdk-style project format

.feature.cs files are generated using

  • [*] SpecFlow.Tools.MsBuild.Generation NuGet package
  • [ ] SpecFlowSingleFileGenerator custom tool

Visual Studio Version

  • [*] VS 2019
  • [ ] VS 2017
  • [ ] VS 2015

Enable SpecFlowSingleFileGenerator Custom Tool option in Visual Studio extension settings

  • [ ] Enabled
  • [ ] Disabled

Are the latest Visual Studio updates installed?

  • [*] Yes
  • [ ] No, I use Visual Studio version <Major>.<Minor>.<Patch>

.NET Framework:

  • [ ] >= .NET 4.5
  • [ ] before .NET 4.5
  • [ ] .NET Core 2.0
  • [ ] .NET Core 2.1
  • [ ] .NET Core 2.2
  • [ ] .NET Core 3.0
  • [*] .NET Core 3.1

Test Execution Method:

  • [ ] Visual Studio Test Explorer
  • [ ] TFS/VSTS/Azure DevOps – Task – PLEASE SPECIFY THE NAME OF THE TASK
  • [ ] Command line – PLEASE SPECIFY THE FULL COMMAND LINE
  • [*] Resharper test explorer

<SpecFlow> Section in app.config or content of specflow.json

{
  "bindingCulture": {
    "language": "en-us"
  },
  "language": {
    "feature": "en-us"
  },
  "ApiUrls": [
    {
      "ApiUrl": "http://localhost:5005",
      "DataBaseName": "",
      "Name": "AuthService"
    },
.....
   }
}

xmegacorel avatar May 04 '20 17:05 xmegacorel

@SabotageAndi Hey, there is any update on the subject?

eliitzh17 avatar Jun 22 '21 08:06 eliitzh17

No, sadly not.

SabotageAndi avatar Jul 05 '21 09:07 SabotageAndi

@SabotageAndi Sorry if this is not related, however does it mean we can't bind an async operation in a [BeforeFeature] hook as well? Thanks

william-li-ry avatar Sep 20 '21 08:09 william-li-ry

@SabotageAndi Sorry if this is not related, however does it mean we can't bind an async operation in a [BeforeFeature] hook as well? Thanks

I am using Specflow.xunit v3.9.74 and am able to use as below

    public static async Task CleanupOnStart()
    {
        await DoSomethingAsync();
        await DoSomethingElseAsync();
    }

septst avatar Sep 01 '22 18:09 septst

Any update ?

Rayzbam avatar Jul 12 '23 14:07 Rayzbam