public CodeNamespace GenerateTestFileCode(SpecFlowFeatureFile featureFile, TextReader inputReader, CodeDomProvider codeProvider, CodeDomHelper codeDomHelper) { string targetNamespace = GetTargetNamespace(featureFile); SpecFlowLangParser parser = new SpecFlowLangParser(project.GeneratorConfiguration.FeatureLanguage); Feature feature = parser.Parse(inputReader, featureFile.GetFullPath(project)); IUnitTestGeneratorProvider generatorProvider = ConfigurationServices.CreateInstance<IUnitTestGeneratorProvider>(project.GeneratorConfiguration.GeneratorUnitTestProviderType); codeDomHelper.InjectIfRequired(generatorProvider); ISpecFlowUnitTestConverter testConverter = new SpecFlowUnitTestConverter(generatorProvider, codeDomHelper, project.GeneratorConfiguration.AllowDebugGeneratedFiles); var codeNamespace = testConverter.GenerateUnitTestFixture(feature, null, targetNamespace); return codeNamespace; }
public void GenerateTestFile(SpecFlowFeatureFile featureFile, CodeDomProvider codeProvider, TextReader inputReader, TextWriter outputWriter) { outputWriter = new HackedWriter(outputWriter); CodeDomHelper codeDomHelper = new CodeDomHelper(codeProvider); var codeNamespace = GenerateTestFileCode(featureFile, inputReader, codeProvider, codeDomHelper); var options = new CodeGeneratorOptions { BracingStyle = "C" }; AddSpecFlowHeader(codeProvider, outputWriter, codeDomHelper); codeProvider.GenerateCodeFromNamespace(codeNamespace, outputWriter, options); AddSpecFlowFooter(codeProvider, outputWriter, codeDomHelper); outputWriter.Flush(); }
private void GenerateCodeFromFeature(Feature feature, TextWriter writer) { var codeDomHelper = new CodeDomHelper(GenerationTargetLanguage.CSharp); var mbUnitTestGeneratorProvider = new MbUnitTestGeneratorProvider(); var converter = new SpecFlowUnitTestConverter(mbUnitTestGeneratorProvider, codeDomHelper, true); CodeNamespace codeNamespace = converter.GenerateUnitTestFixture(feature, "TestClassName", "Target.Namespace"); var codeProvider = new CSharpCodeProvider(); var options = new CodeGeneratorOptions(); codeProvider.GenerateCodeFromNamespace(codeNamespace, writer, options); }
private void AddSpecFlowHeader(CodeDomProvider codeProvider, TextWriter outputWriter, CodeDomHelper codeDomHelper) { var specFlowHeaderTemplate = @"------------------------------------------------------------------------------ <auto-generated> This code was generated by SpecFlow (http://www.specflow.org/). SpecFlow Version:{0} Runtime Version:{1} Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. </auto-generated> ------------------------------------------------------------------------------"; var headerReader = new StringReader(string.Format(specFlowHeaderTemplate, GetCurrentSpecFlowVersion(), Environment.Version )); string line; while ((line = headerReader.ReadLine()) != null) { codeProvider.GenerateCodeFromStatement(new CodeCommentStatement(line), outputWriter, null); } codeProvider.GenerateCodeFromStatement(codeDomHelper.GetStartRegionStatement("Designer generated code"), outputWriter, null); }
private void AddSpecFlowFooter(CodeDomProvider codeProvider, TextWriter outputWriter, CodeDomHelper codeDomHelper) { codeProvider.GenerateCodeFromStatement(codeDomHelper.GetEndRegionStatement(), outputWriter, null); }