Example #1
0
            //--------------------------------------------------------------------------------------------------------------------------------------
            //--------------------------------------------------------------------------------------------------------------------------------------

            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)));
        }