public void Execute(Scenario scenario, IEnumerable <IStep> steps) { _progressNotifier.NotifyScenarioStart(scenario.Name, scenario.Label); var stepsToExecute = PrepareSteps(scenario, steps); var watch = new Stopwatch(); var scenarioStartTime = DateTimeOffset.UtcNow; try { ExecutionContext.Instance = new ExecutionContext(_progressNotifier, stepsToExecute.Length); watch.Start(); ExecuteSteps(stepsToExecute); } finally { watch.Stop(); ExecutionContext.Instance = null; var result = new ScenarioResult(scenario.Name, stepsToExecute.Select(s => s.GetResult()), scenario.Label, scenario.Categories) .SetExecutionStart(scenarioStartTime) .SetExecutionTime(watch.Elapsed); if (ScenarioExecuted != null) { ScenarioExecuted.Invoke(result); } _progressNotifier.NotifyScenarioFinished(result); } }
public void NotifyScenarioFinished_should_print_scenario_result(ResultStatus status) { var executionTime = new TimeSpan(0, 0, 27); string expectedText = string.Format(" SCENARIO RESULT: {0} after {1}{2}", status, executionTime.FormatPretty(), Environment.NewLine); var result = MockRepository.GenerateMock <IScenarioResult>(); result.Stub(r => r.Status).Return(status); result.Stub(r => r.ExecutionTime).Return(executionTime); _subject.NotifyScenarioFinished(result); Assert.That(_console.GetCapturedText(), Is.EqualTo(expectedText)); }