コード例 #1
0
        /// <summary>
        /// Executes the specified test suite.
        /// </summary>
        /// <param name="testSuite">The test suite.</param>
        /// <returns></returns>
        public TestExecutionResult Execute(ITestCase testCase)
        {
            testCase.EnsureNotNull(nameof(testCase));

            testCase.Steps.EnsureNotNull(nameof(testCase.Steps));

            var result = new TestExecutionResult
            {
                TestCaseName = testCase.Name,
                Status       = Enums.TestExecutionStatus.Successful
            };

            _reporter.NewTestCase(testCase.Name, testCase.Description);
            var activityResultSet = new List <IActivityExecutionResult>();

            foreach (var step in testCase.Steps)
            {
                string activityDescription = string.Empty;
                IActivityExecutionResult activityResult;
                try
                {
                    var activity = ActivityFactory.GetActivity(step, _reporter, _driver);
                    activityResult = activity.Execute();
                    activityResultSet.Add(activityResult);
                    if (activityResult.Status == Enums.ActivityExecutionStatus.Failed)
                    {
                        break;
                    }
                }
                catch (Exception e)
                {
                    result.Status = Enums.TestExecutionStatus.Failed;
                    _reporter.Exception(e);
                    break;
                }
            }

            if (activityResultSet.Any(r => r.Status == Enums.ActivityExecutionStatus.Failed))
            {
                _reporter.Fail($"{testCase.Name} failed.");
                result.Status = Enums.TestExecutionStatus.Failed;
            }
            else
            {
                _reporter.Pass($"{testCase.Name} passed.");
            }

            return(result);
        }