示例#1
0
        FeatureResult ExecuteFeature(Feature feature, Type[] types, RunnerOptions options)
        {
            var featureResult = new FeatureResult(feature);
            var matcher       = new StepMatcher();
            var finder        = new ActionStepFinder();

            var steps = GetUniqueSteps(feature);
            var actionStepsClasses = finder.Find(types);
            var matches            = MatchStepsToActionMethods(steps, actionStepsClasses, matcher);
            var executionObjects   = GetExecutionObjects(matches);
            var filter             = options.Filter;

            try
            {
                BeforeFeature(feature, executionObjects);

                foreach (var scenario in feature.Scenarios.SelectMany(s => s.GetExecutableScenarios()).Where(s => filter.IsSatisfiedBy(s.Tags)))
                {
                    BeforeScenario(feature, scenario, executionObjects);
                    var result = ExecuteScenario(scenario, feature, matches, executionObjects, options);
                    featureResult.AddScenarioResult(result);
                    AfterScenario(feature, scenario, result, executionObjects);

                    if (options.SuccessRequired && !result.Success)
                    {
                        break;
                    }
                }

                AfterFeature(feature, featureResult, executionObjects);
            }
            finally
            {
                CleanUpExecutionObjects(executionObjects);
            }

            return(featureResult);
        }
 public override void DoSetUp()
 {
     matcher = new StepMatcher();
 }
示例#3
0
 List <FoundMatch> MatchStepsToActionMethods(IEnumerable <Step> steps, IEnumerable <ActionStepsClass> actionStepsClasses, StepMatcher matcher)
 {
     return((from step in steps
             from actionStepClass in actionStepsClasses
             let requiredType = actionStepClass.Type
                                from actionStepMethod in actionStepClass.ActionStepMethods
                                let match = matcher.GetMatch(step, actionStepMethod)
                                            where match.IsMatch
                                            select new FoundMatch
     {
         RequiredType = requiredType,
         ActionStepMethod = actionStepMethod,
         StepMatch = match,
     })
            .ToList());
 }