示例#1
0
        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));
            });
        }
示例#2
0
        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());
            }
        }
示例#4
0
        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);
        }