Esempio n. 1
0
        public void RecordException(Exception ex)
        {
            var result = new ExceptionResult(ex, FailureSite.Test);

            SetResult(result.ResultState, result.Message, result.StackTrace);

            if (AssertionResults.Count > 0 && result.ResultState == ResultState.Error)
            {
                // Add pending failures to the legacy result message
                Message += Environment.NewLine + Environment.NewLine + CreateLegacyFailureMessage();

                // Add to the list of assertion errors, so that newer runners will see it
                AssertionResults.Add(new AssertionResult(AssertionStatus.Error, result.Message, result.StackTrace));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Set the test result based on the type of exception thrown
        /// </summary>
        /// <param name="ex">The exception that was thrown</param>
        public void RecordException(Exception ex)
        {
            if (ex is NUnitException || ex is TargetInvocationException)
            {
                ex = ex.InnerException;
            }

            if (ex is AssertionException)
            {
                AssertionResults.Add(new AssertionResult(AssertionStatus.Failed, ex.Message, StackFilter.DefaultFilter.Filter(ex.StackTrace)));
            }

            if (ex is ResultStateException)
            {
                string message = ex is MultipleAssertException
                    ? CreateLegacyFailureMessage()
                    : ex.Message;

                string stackTrace = StackFilter.DefaultFilter.Filter(ex.StackTrace);

                SetResult(((ResultStateException)ex).ResultState, message, stackTrace);
            }
#if !NETSTANDARD1_3 && !NETSTANDARD1_6
            else if (ex is System.Threading.ThreadAbortException)
            {
                SetResult(ResultState.Cancelled,
                          "Test cancelled by user",
                          ex.StackTrace);
            }
#endif
            else
            {
                string message    = ExceptionHelper.BuildMessage(ex);
                string stackTrace = ExceptionHelper.BuildStackTrace(ex);
                SetResult(ResultState.Error, message, stackTrace);

                if (AssertionResults.Count > 0)
                {
                    // Add pending failures to the legacy result message
                    Message += CreateLegacyFailureMessage();

                    // Add to the list of assertion errors, so that newer runners will see it
                    AssertionResults.Add(new AssertionResult(AssertionStatus.Error, message, stackTrace));
                }
            }
        }