Skip to content

Not working with SpecFlow features that are using Xunit #2

@jonasjanusauskas

Description

@jonasjanusauskas

Issue when using Xunit is that when trying to create background feature object from Background.feature.cs it fails on this line with error "could not find a parameterless constructor"

This is because SpecFlow feature classes has constructor with parameters when using Xunit, while SpecFlow features which uses NUnit does not have any constructor.

Also there is another issue on this line when using Xunit. TestRunner variable is static while with NUnit it is class instance variable.

Xunit Background.feature.cs

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.4.0.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public partial class BackgroundFeature : Xunit.IClassFixture<BackgroundFeature.FixtureData>, System.IDisposable
{
    private static TechTalk.SpecFlow.ITestRunner testRunner;
    private Xunit.Abstractions.ITestOutputHelper _testOutputHelper;

    public BackgroundFeature(BackgroundFeature.FixtureData fixtureData, Xunit.Abstractions.ITestOutputHelper testOutputHelper)
    {
        this._testOutputHelper = testOutputHelper;
        this.TestInitialize();
    }

    public static void FeatureSetup()
    {
        testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
        TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Background", null, ProgrammingLanguage.CSharp, new string[] {
                    "ignore"});
        testRunner.OnFeatureStart(featureInfo);
    }

    ...
}

NUnit SharedBackground.feature.cs

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.2.0.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("\'Shared\' \'Background\'")]
[NUnit.Framework.IgnoreAttribute("Ignored feature")]

public partial class SharedBackgroundFeature
{        
    private TechTalk.SpecFlow.ITestRunner testRunner;
    
    [NUnit.Framework.OneTimeSetUpAttribute()]
    public virtual void FeatureSetup()
    {
        testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
        TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "\'Shared\' \'Background\'", null, ProgrammingLanguage.CSharp, new string[] {
                    "ignore"});
        testRunner.OnFeatureStart(featureInfo);
    }

    ...
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions