public void SetRow(TestClassGenerationContext generationContext, CodeMemberMethod testMethod, IEnumerable <string> arguments, IEnumerable <string> tags, bool isIgnored) { _unitTestGeneratorProvider.SetRow(generationContext, testMethod, arguments, tags, isIgnored); UpdateAttributes(testMethod); }
private void GenerateScenarioOutlineTest(CodeTypeDeclaration testType, CodeMemberMethod testSetup, ScenarioOutline scenarioOutline, Feature feature) { string testMethodName = string.Format(TEST_FORMAT, scenarioOutline.Title.ToIdentifier()); ParameterSubstitution paramToIdentifier = new ParameterSubstitution(); foreach (var param in scenarioOutline.Examples.ExampleSets[0].Table.Header.Cells) { paramToIdentifier.Add(param.Value, param.Value.ToIdentifierCamelCase()); } if (scenarioOutline.Examples.ExampleSets.Length > 1) { //TODO: check params } var testMethod = GenerateScenarioOutlineBody(feature, scenarioOutline, paramToIdentifier, testType, testMethodName, testSetup); if (testGeneratorProvider.SupportsRowTests && this.allowRowTests) { SetTestMethodDeclaration(testMethod, scenarioOutline, null, rowTest: true); foreach (var exampleSet in scenarioOutline.Examples.ExampleSets) { for (int rowIndex = 0; rowIndex < exampleSet.Table.Body.Length; rowIndex++) { IEnumerable <string> arguments = exampleSet.Table.Body[rowIndex].Cells.Select(c => c.Value); testGeneratorProvider.SetRow(testMethod, arguments, GetNonIgnoreTags(exampleSet.Tags), HasIgnoreTag(exampleSet.Tags)); } } } else { int exampleSetIndex = 0; foreach (var exampleSet in scenarioOutline.Examples.ExampleSets) { string exampleSetTitle = exampleSet.Title == null ? string.Format("Scenarios{0}", exampleSetIndex + 1) : exampleSet.Title.ToIdentifier(); bool useFirstColumnAsName = CanUseFirstColumnAsName(exampleSet.Table); for (int rowIndex = 0; rowIndex < exampleSet.Table.Body.Length; rowIndex++) { string variantName = useFirstColumnAsName ? exampleSet.Table.Body[rowIndex].Cells[0].Value.ToIdentifierPart() : string.Format("Variant{0}", rowIndex); GenerateScenarioOutlineTestVariant(testType, scenarioOutline, testMethodName, paramToIdentifier, exampleSetTitle, exampleSet.Table.Body[rowIndex], exampleSet.Tags, variantName, exampleSet); } exampleSetIndex++; } } }
private void GenerateScenarioOutlineExamplesAsRowTests(TestClassGenerationContext generationContext, ScenarioOutline scenarioOutline, CodeMemberMethod scenatioOutlineTestMethod) { SetupTestMethod(generationContext, scenatioOutlineTestMethod, scenarioOutline, null, null, null, rowTest: true); foreach (var examples in scenarioOutline.Examples) { foreach (var row in examples.TableBody) { var arguments = row.Cells.Select(c => c.Value); testGeneratorProvider.SetRow(generationContext, scenatioOutlineTestMethod, arguments, GetNonIgnoreTags(examples.Tags), HasIgnoreTag(examples.Tags)); } } }
private void GenerateScenarioOutlineExamplesAsRowTests(TestClassGenerationContext generationContext, ScenarioOutline scenarioOutline, CodeMemberMethod scenatioOutlineTestMethod, List <string> variantTags = null) { SetupTestMethod(generationContext, scenatioOutlineTestMethod, scenarioOutline, null, null, null, true); foreach (var example in scenarioOutline.Examples) { //NEW CODE START var hasVariantTags = variantTags?.Count > 0; if (hasVariantTags) { scenatioOutlineTestMethod.Parameters.RemoveAt(scenatioOutlineTestMethod.Parameters.Count - 1); scenatioOutlineTestMethod.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), _variantHelper.VariantKey.ToLowerInvariant())); scenatioOutlineTestMethod.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string[]), "exampleTags")); _setVariantToContextForOutlineTest = true; } foreach (var tableRow in example.TableBody) { if (hasVariantTags) { foreach (var variant in variantTags) { var arguments = tableRow.Cells.Select(c => c.Value).ToList(); arguments.Add($"{_variantHelper.VariantKey}:{variant}"); _testGeneratorProvider.SetRow(generationContext, scenatioOutlineTestMethod, arguments, example.Tags.GetTagsExcept("@Ignore"), example.Tags.HasTag("@Ignore")); } } else { var arguments = tableRow.Cells.Select(c => c.Value).ToList(); _testGeneratorProvider.SetRow(generationContext, scenatioOutlineTestMethod, arguments, example.Tags.GetTagsExcept("@Ignore"), example.Tags.HasTag("@Ignore")); } //NEW CODE END } } }
private void GenerateScenarioOutlineTest(CodeTypeDeclaration testType, CodeMemberMethod testSetup, ScenarioOutline scenarioOutline, Feature feature) { string testMethodName = string.Format(TEST_FORMAT, scenarioOutline.Title.ToIdentifier()); ParameterSubstitution paramToIdentifier = new ParameterSubstitution(); foreach (var param in scenarioOutline.Examples.ExampleSets[0].Table.Header.Cells) { paramToIdentifier.Add(param.Value, param.Value.ToIdentifierCamelCase()); } if (scenarioOutline.Examples.ExampleSets.Length > 1) { //check params if (scenarioOutline.Examples.ExampleSets.Skip(1) .Select(exampleSet => exampleSet.Table.Header.Cells.Select(c => c.Value)) .Any(paramNames => !paramNames.SequenceEqual(paramToIdentifier.Select(p2i => p2i.Key)))) { throw new TestGeneratorException("The example sets must provide the same parameters."); } } var testMethod = GenerateScenarioOutlineBody(feature, scenarioOutline, paramToIdentifier, testType, testMethodName, testSetup); if (testGeneratorProvider.SupportsRowTests && this.allowRowTests) { SetTestMethodDeclaration(testMethod, scenarioOutline, null, rowTest: true); foreach (var exampleSet in scenarioOutline.Examples.ExampleSets) { for (int rowIndex = 0; rowIndex < exampleSet.Table.Body.Length; rowIndex++) { IEnumerable <string> arguments = exampleSet.Table.Body[rowIndex].Cells.Select(c => c.Value); testGeneratorProvider.SetRow(testMethod, arguments, GetNonIgnoreTags(exampleSet.Tags), HasIgnoreTag(exampleSet.Tags)); } } } else { int exampleSetIndex = 0; foreach (var exampleSet in scenarioOutline.Examples.ExampleSets) { bool useFirstColumnAsName = CanUseFirstColumnAsName(exampleSet.Table); string exampleSetIdentifier = string.IsNullOrEmpty(exampleSet.Title) ? scenarioOutline.Examples.ExampleSets.Count(es => string.IsNullOrEmpty(es.Title)) > 1 ? string.Format("ExampleSet {0}", exampleSetIndex).ToIdentifier() : null : exampleSet.Title.ToIdentifier(); for (int rowIndex = 0; rowIndex < exampleSet.Table.Body.Length; rowIndex++) { string variantName = useFirstColumnAsName ? exampleSet.Table.Body[rowIndex].Cells[0].Value : string.Format("Variant {0}", rowIndex); GenerateScenarioOutlineTestVariant(testType, scenarioOutline, testMethodName, paramToIdentifier, exampleSet.Title ?? "", exampleSetIdentifier, exampleSet.Table.Body[rowIndex], exampleSet.Tags, variantName); } exampleSetIndex++; } } }
public void SetRow(TestClassGenerationContext generationContext, CodeMemberMethod testMethod, IEnumerable <string> arguments, IEnumerable <string> tags, bool isIgnored) { _innerGenerator.SetRow(generationContext, testMethod, arguments, tags, isIgnored); }