public void GenerateCode(FileProjectItem item, CustomToolContext context) { context.RunAsync( () => { string fileName = item.FileName; var projectNode = item.Project; SpecFlowProject specFlowProject = CreateSpecFlowProjectFrom(projectNode); var specFlowGenerator = new SpecFlowGenerator(specFlowProject); string outputFile = context.GetOutputFileName(item, ".feature"); var specFlowFeatureFile = specFlowProject.GetOrCreateFeatureFile(fileName); var fileContents = File.ReadAllText(fileName); string outputFileContents; using (var reader = new StringReader(fileContents)) { using (var writer = new StringWriter(new StringBuilder())) { specFlowGenerator.GenerateTestFile(specFlowFeatureFile, projectNode.LanguageProperties.CodeDomProvider, reader, writer); outputFileContents = writer.ToString(); } } File.WriteAllText(outputFile, outputFileContents); WorkbenchSingleton.SafeThreadCall( () => context.EnsureOutputFileIsInProject(item, outputFile)); }); }
public void Should_be_able_to_construct_a_test_class() { const string testProject = "TestSample.DefaultSettings"; const string featureFile = "BrowserRequiredTest.feature"; var testProjectFolder = Path.Combine(AssemblyDirectory, @"..\..\..\", testProject); var configurationHolder = new SpecFlowConfigurationHolder(AppConfig); var projectSettings = new ProjectSettings { AssemblyName = testProject, DefaultNamespace = testProject, ProjectName = testProject, ProjectFolder = testProjectFolder, ConfigurationHolder = configurationHolder, ProjectPlatformSettings = new ProjectPlatformSettings() }; var specflowProject = new SpecFlowProject { ProjectSettings = projectSettings }; var featurefileInput = specflowProject.GetOrCreateFeatureFile(featureFile); var container = GeneratorContainerBuilder.CreateContainer(configurationHolder, projectSettings); var generator = container.Resolve <ITestGenerator>(); var testFile = generator.GenerateTestFile(featurefileInput, new GenerationSettings()); var testFileContent = testFile.GeneratedTestCode; Console.WriteLine(testFileContent); Assert.That(testFile.Success); }
protected override string GenerateCode(string inputFileContent) { CodeDomProvider provider = GetCodeProvider(); SpecFlowProject specFlowProject = DteProjectReader.LoadSpecFlowProjectFromDteProject(CurrentProject); SpecFlowGenerator generator = new SpecFlowGenerator(specFlowProject); using (var writer = new StringWriter(new StringBuilder())) { generator.GenerateTestFile( specFlowProject.GetOrCreateFeatureFile(CodeFilePath), provider, new StringReader(inputFileContent), writer); return(writer.ToString()); } }
private FilePath GenerateFeatureCodeFileFor(ProjectFile featureFile) { // TODO: We only support C# for now, later we'll add support to grab the provider based on the project CodeDomProvider codeProvider = new CSharpCodeProvider(); FilePath outputFile = featureFile.FilePath.ChangeExtension(".feature." + codeProvider.FileExtension); SpecFlowProject specFlowProject = MonoDevelopProjectReader.CreateSpecFlowProjectFrom(featureFile.Project); var specFlowGenerator = new SpecFlowGenerator(specFlowProject); using (var writer = new StringWriter(new StringBuilder())) using (var reader = new StringReader(File.ReadAllText(featureFile.FilePath))) { SpecFlowFeatureFile specFlowFeatureFile = specFlowProject.GetOrCreateFeatureFile(featureFile.FilePath); specFlowGenerator.GenerateTestFile(specFlowFeatureFile, codeProvider, reader, writer); File.WriteAllText(outputFile, writer.ToString()); } return(outputFile); }