//-------------------------------------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------------------------------------- public StepAndAttributeBundle( MethodInfo methodInfo, ABusinessStepScenarioAttribute businessStepScenario, AExceptionIgnoreAttribute exceptionIgnoreAttribute, AScenarioStepTimeoutAttribute scenarioStepTimeoutAttribute) { _methodInfo = methodInfo; _businessStepScenario = businessStepScenario; _exceptionIgnoreAttribute = exceptionIgnoreAttribute; _scenarioStepTimeoutAttribute = scenarioStepTimeoutAttribute; _timeout = ExtractTimeout(_methodInfo); Initialize(); }
private async Task <ScenarioStepReturnResultBundle> RunScenarioStep <TScenario>( TScenario scenario, MethodInfo method, TimeSpan timeout, object[] previousParameters, ABusinessStepScenarioAttribute businessStepScenario) { ScenarioStepReturnBase scenarioStepResult = null; try { _logger.Information(string.Format("[{0}] Step was started.", businessStepScenario.Description)); //await Task.Yield(); await Task.Run(() => { scenarioStepResult = _methodInvoker.MethodInvoke(scenario, method, timeout, previousParameters); }); } catch (AScenarioStepTimeoutException timeoutException) { _logger.Error(string.Format("[{0}] Step was finished usuccessfully due to timeout.", businessStepScenario.Description)); { var scenarioResult = new ScenarioResult(isSuccessful: false, numberScenarioStepInvoked: 1, exceptions: timeoutException); return(new ScenarioStepReturnResultBundle(new ScenarioStepReturnVoid(), scenarioResult)); } } catch (Exception exception) { _logger.Error(string.Format("[{0}] Step was finished usuccessfully due to the following exception [{1}].", businessStepScenario.Description, exception)); { var scenarioResult = new ScenarioResult(isSuccessful: false, numberScenarioStepInvoked: 1, exceptions: exception); return(new ScenarioStepReturnResultBundle(new ScenarioStepReturnVoid(), scenarioResult)); } } _logger.Information(string.Format("[{0}] Step was finished successfully.", businessStepScenario.Description)); return(new ScenarioStepReturnResultBundle(scenarioStepResult, new EmptyScenarioResult(numberScenarioStepInvoked: 1))); }