public void MsTestGeneratorShouldInvokeFeatureSetupMethodWithGlobalNamespaceAlias() { SpecFlowGherkinParser parser = new SpecFlowGherkinParser(new CultureInfo("en-US")); using (var reader = new StringReader(SampleFeatureFileWithMultipleExampleSets)) { SpecFlowDocument document = parser.Parse(reader, null); Assert.IsNotNull(document); var sampleTestGeneratorProvider = new MsTestGeneratorProvider(new CodeDomHelper(CodeDomProviderLanguage.CSharp)); var converter = sampleTestGeneratorProvider.CreateUnitTestConverter(); CodeNamespace code = converter.GenerateUnitTestFixture(document, "TestClassName", "Target.Namespace"); Assert.IsNotNull(code); var featureSetupCall = code .Class() .Members() .Single(m => m.Name == "TestInitialize") .Statements .OfType <CodeConditionStatement>() .First() .TrueStatements .OfType <CodeExpressionStatement>() .First() .Expression .As <CodeMethodInvokeExpression>(); featureSetupCall.Should().NotBeNull(); featureSetupCall.Method.MethodName.Should().Be("FeatureSetup"); featureSetupCall.Method.TargetObject.As <CodeTypeReferenceExpression>().Type.Options.Should().Be(CodeTypeReferenceOptions.GlobalReference); } }
public void MsTestGeneratorShouldSetDescriptionCorrectlyWhenExampleSetIdentifierIsUsed() { SpecFlowGherkinParser parser = new SpecFlowGherkinParser(new CultureInfo("en-US")); using (var reader = new StringReader(SampleFeatureFileWithMultipleExampleSets)) { SpecFlowDocument document = parser.Parse(reader, null); Assert.IsNotNull(document); var sampleTestGeneratorProvider = new MsTestGeneratorProvider(new CodeDomHelper(CodeDomProviderLanguage.CSharp)); var converter = sampleTestGeneratorProvider.CreateUnitTestConverter(); CodeNamespace code = converter.GenerateUnitTestFixture(document, "TestClassName", "Target.Namespace"); Assert.IsNotNull(code); var descriptionAttributeForFirstScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_ExampleSet0_Something").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForFirstScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: something"); var descriptionAttributeForSecondScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_ExampleSet0_SomethingElse").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForSecondScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: something else"); var descriptionAttributeForThirdScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_ExampleSet1_Another").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForThirdScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: another"); var descriptionAttributeForFourthScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_ExampleSet1_AndAnother").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForFourthScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: and another"); } }
public void MsTestGeneratorProvider_ShouldInvokeFeatureSetupMethodWithGlobalNamespaceAlias() { // ARRANGE var document = ParseDocumentFromString(SampleFeatureFileWithMultipleExampleSets); var sampleTestGeneratorProvider = new MsTestGeneratorProvider(new CodeDomHelper(CodeDomProviderLanguage.CSharp)); var converter = sampleTestGeneratorProvider.CreateUnitTestConverter(); // ACT var code = converter.GenerateUnitTestFixture(document, "TestClassName", "Target.Namespace"); // ASSERT var featureSetupCall = code .Class() .Members() .Single(m => m.Name == "TestInitialize") .Statements .OfType <CodeConditionStatement>() .First() .TrueStatements .OfType <CodeExpressionStatement>() .First() .Expression .As <CodeMethodInvokeExpression>(); featureSetupCall.Should().NotBeNull(); featureSetupCall.Method.MethodName.Should().Be("FeatureSetup"); featureSetupCall.Method.TargetObject.As <CodeTypeReferenceExpression>().Type.Options.Should().Be(CodeTypeReferenceOptions.GlobalReference); }
public void MsTestGeneratorProvider_ExamplesFirstColumnIsDifferentAndMultipleColumns_ShouldSetDescriptionCorrectly() { // ARRANGE var document = ParseDocumentFromString(SampleFeatureFileMultipleColumns); var sampleTestGeneratorProvider = new MsTestGeneratorProvider(new CodeDomHelper(CodeDomProviderLanguage.CSharp)); var converter = sampleTestGeneratorProvider.CreateUnitTestConverter(); // ACT var code = converter.GenerateUnitTestFixture(document, "TestClassName", "Target.Namespace"); // ASSERT var descriptionAttributeForFirstScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_Something").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForFirstScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: something"); var descriptionAttributeForSecondScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_SomethingElse").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForSecondScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: something else"); }
public void MsTestGeneratorShouldSetDescriptionCorrectlyWhenVariantNameFirstColumnIsTheSame() { SpecFlowGherkinParser parser = new SpecFlowGherkinParser(new CultureInfo("en-US")); using (var reader = new StringReader(SampleFeatureFileSameFirstColumn)) { SpecFlowDocument document = parser.Parse(reader, null); Assert.IsNotNull(document); var sampleTestGeneratorProvider = new MsTestGeneratorProvider(new CodeDomHelper(CodeDomProviderLanguage.CSharp)); var converter = sampleTestGeneratorProvider.CreateUnitTestConverter(); CodeNamespace code = converter.GenerateUnitTestFixture(document, "TestClassName", "Target.Namespace"); Assert.IsNotNull(code); var descriptionAttributeForFirstScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_Variant0").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForFirstScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: Variant 0"); var descriptionAttributeForSecondScenarioOutline = code.Class().Members().Single(m => m.Name == "SimpleScenarioOutline_Variant1").CustomAttributes().Single(a => a.Name == TestDescriptionAttributeName); descriptionAttributeForSecondScenarioOutline.ArgumentValues().First().Should().Be("Simple Scenario Outline: Variant 1"); } }