private List <string> ClassesDeclared(TestClassGenerationContext generationContext, CodeMemberMethod testMethod,
                                              ScenarioStep scenarioStep, List <string> classesDeclared)
        {
            var result = m_stepTextAnalyzer.Analyze(scenarioStep.Text, new CultureInfo("en-GB"));

            if (scenarioStep.MultiLineTextArgument != null)
            {
                result.Parameters.Add(new AnalyzedStepParameter("String", "multilineText"));
            }

            if (scenarioStep.TableArg != null)
            {
                result.Parameters.Add(new AnalyzedStepParameter("Table", "table"));
            }
            var regex = GetSimpleRegex(result);

            try
            {
                var originalFilePath = new FileInfo(generationContext.Feature.SourceFile).Directory.Parent.FullName +
                                       @"\bin\debug";
                var newFolderPath = Path.GetTempPath() + @"\Specflowdlls\" + DateTime.Now.ToLongDateString() +
                                    DateTime.Now.Ticks;

                var newDir = new DirectoryInfo(newFolderPath);
                newDir.Create();

                string[] files = Directory.GetFiles(originalFilePath, "*.dll");

                foreach (string file in files)
                {
                    string otherFile = Path.Combine(newFolderPath, Path.GetFileName(file));
                    File.Copy(file, otherFile, true);
                }

                var dllname = new FileInfo(generationContext.Feature.SourceFile).Directory.Parent.Name + ".dll";

                var assembly = Assembly.LoadFrom(String.Concat(newFolderPath, @"\", dllname));

                var methods = assembly.GetTypes()
                              .SelectMany(t => t.GetMethods())
                              .Where(m => HasSpecflowAttribute(m.GetCustomAttributesData(), regex))
                              .ToArray();


                foreach (var methodInfo in methods)
                {
                    classesDeclared = AddStatements(testMethod, methodInfo, classesDeclared, scenarioStep, result, regex);
                }
            }
            catch (Exception exception)
            {
                throw new Exception("oops", exception);
            }
            return(classesDeclared);
        }
Exemple #2
0
        public AnalyzedStepText Analyze(StepInstance stepInstance, CultureInfo bindingCulture)
        {
            var result = stepTextAnalyzer.Analyze(stepInstance.Text, bindingCulture);

            if (stepInstance.MultilineTextArgument != null)
            {
                result.Parameters.Add(new AnalyzedStepParameter("String", "multilineText"));
            }
            if (stepInstance.TableArgument != null)
            {
                result.Parameters.Add(new AnalyzedStepParameter("Table", "table"));
            }
            return(result);
        }