/SpecFlow.NetCore

A (hopefully) temporary solution to get SpecFlow and .NET Core to play nice

Primary LanguageC#MIT LicenseMIT

⚠️ SpecFlow itself (and by extension this project) is currently limited to Windows platforms with .NET Framework v4.5.1+

SpecFlow.NetCore

The problem

As at the time of writing (September 2016), the SpecFlow for Visual Studio 2015 extension does not play well with .NET Core projects.

The solution

Wait for the VS extension to support .NET Core projects. In the meantime, I present...

The (hopefully temporary) solution

Update your project:

  1. Include SpecFlow and your test framework of choice:

    • xUnit:

      <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
        <PackageReference Include="SpecFlow" Version="2.1.0" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
        <PackageReference Include="xunit" Version="2.2.0" />
      </ItemGroup>
    • NUnit (Experimental):

      <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
        <PackageReference Include="SpecFlow" Version="2.1.0" />
        <PackageReference Include="NUnit" Version="3.8.1" />
        <PackageReference Include="dotnet-test-nunit" Version="3.4.0-beta-2" />
      </ItemGroup>
    • MsTest (Experimental):

      <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
        <PackageReference Include="SpecFlow" Version="2.1.0" />
        <PackageReference Include="MSTest.TestAdapter" Version="1.1.18" />
        <PackageReference Include="MSTest.TestFramework" Version="1.1.18" />
      </ItemGroup>
  2. Include SpecFlow.NetCore:

    <ItemGroup>
      <DotNetCliToolReference Include="SpecFlow.NetCore" Version="1.3.1" />
    </ItemGroup>
  3. Add a precompile script:

    <Target Name="PrecompileScript" BeforeTargets="BeforeBuild">
      <Exec Command="dotnet SpecFlow.NetCore" />
    </Target>
  4. Build for your tests to be discovered.

    Note: there is a bug with the .NET Core CLI requiring a second build for newly added files to be discovered.

.NET Core & target frameworks

SpecFlow itself is currently limited to Windows platforms with full .NET Framework v4.5.1+. This means that two of the most common target frameworks are unsupported:

  • .NET Standard (unsupported)
  • .NET Core Application (unsupported)
  • .NET Framework

For .NET Framework, the following Target Framework Monikers (TFMs) are officially supported:

  • net46
  • net461

TFMs of net451 and above should support SpecFlow and this project, but have not been officially tested.

Visual Studio

Test Explorer

image

Samples

If you build the samples solution, you should see .feature.cs files and an app.config being generated for each test framework.

Background