/// <summary> /// Configures the templating engine. /// </summary> private static void Configure() { var config = RazorEngineConfigurationSection.GetConfiguration(); if (config != null) { if (!string.IsNullOrWhiteSpace(config.Factory)) { SetCompilerServiceFactory(config.Factory); } else { CompilerServiceFactory = new DefaultCompilerServiceFactory(); } if (config.TemplateServices.Count > 0) { string @default = string.IsNullOrWhiteSpace(config.TemplateServices.Default) ? null : config.TemplateServices.Default; foreach (TemplateServiceConfigurationElement serviceConfig in config.TemplateServices) { string name = serviceConfig.Name; var service = ConfigurationServices.CreateTemplateService(serviceConfig);; ConfigurationServices.AddNamespaces(service, config.Namespaces); if (name == @default) { DefaultTemplateService = service; } Services.Add(name, service); } } if (DefaultTemplateService == null) { DefaultTemplateService = new TemplateService(CompilerServiceFactory.CreateCompilerService()); ConfigurationServices.AddNamespaces(DefaultTemplateService, config.Namespaces); } if (!string.IsNullOrWhiteSpace(config.Activator)) { DefaultTemplateService.SetActivator(ConfigurationServices.CreateInstance <IActivator>(config.Activator)); } } else { ConfigureDefault(); } }
public CodeNamespace GenerateTestFileCode(FeatureFileInput featureFile, TextReader inputReader, CodeDomProvider codeProvider, CodeDomHelper codeDomHelper) { string targetNamespace = GetTargetNamespace(featureFile); SpecFlowLangParser parser = new SpecFlowLangParser(project.Configuration.GeneratorConfiguration.FeatureLanguage); Feature feature = parser.Parse(inputReader, featureFile.GetFullPath(project.ProjectSettings)); IUnitTestGeneratorProvider generatorProvider = ConfigurationServices.CreateInstance <IUnitTestGeneratorProvider>(project.Configuration.GeneratorConfiguration.GeneratorUnitTestProviderType); codeDomHelper.InjectIfRequired(generatorProvider); ISpecFlowUnitTestConverter testConverter = new SpecFlowUnitTestConverter(generatorProvider, codeDomHelper, project.Configuration.GeneratorConfiguration); var codeNamespace = testConverter.GenerateUnitTestFixture(feature, null, targetNamespace); return(codeNamespace); }
private CodeNamespace GenerateTestFileCode(FeatureFileInput featureFileInput, CodeDomHelper codeDomHelper) { string targetNamespace = GetTargetNamespace(featureFileInput) ?? "SpecFlow.GeneratedTests"; SpecFlowLangParser parser = new SpecFlowLangParser(generatorConfiguration.FeatureLanguage); Feature feature; using (var contentReader = featureFileInput.GetFeatureFileContentReader(projectSettings)) { feature = parser.Parse(contentReader, featureFileInput.GetFullPath(projectSettings)); } IUnitTestGeneratorProvider generatorProvider = ConfigurationServices.CreateInstance <IUnitTestGeneratorProvider>(generatorConfiguration.GeneratorUnitTestProviderType); codeDomHelper.InjectIfRequired(generatorProvider); ISpecFlowUnitTestConverter testConverter = new SpecFlowUnitTestConverter(generatorProvider, codeDomHelper, generatorConfiguration.AllowDebugGeneratedFiles, generatorConfiguration.AllowRowTests); var codeNamespace = testConverter.GenerateUnitTestFixture(feature, null, targetNamespace); return(codeNamespace); }
/// <summary> /// Sets the compiler factory. /// </summary> /// <param name="typeName">The factory type.</param> private static void SetCompilerServiceFactory(string typeName) { var factory = ConfigurationServices.CreateInstance <ICompilerServiceFactory>(typeName); CompilerServiceFactory = factory; }
private static TInterface GetOrCreate <TInterface>(ref TInterface storage, Type implementationType) where TInterface : class { return(GetOrCreate(ref storage, () => ConfigurationServices.CreateInstance <TInterface>(implementationType))); }