public void AggregateException()
        {
            Action inner1TestCode = () => { throw new DivideByZeroException(); };
            var    inner1         = Record.Exception(inner1TestCode);
            Action inner2TestCode = () => { throw new NotImplementedException("inner #2"); };
            var    inner2         = Record.Exception(inner2TestCode);
            Action inner3TestCode = () => { throw new XunitException("this is crazy"); };
            var    inner3         = Record.Exception(inner3TestCode);
            Action outerTestCode  = () => { throw new AggregateException(inner1, inner2, inner3); };
            var    outer          = Record.Exception(outerTestCode);
            var    failureInfo    = new FailureInformation {
                { outer, -1 }, { inner1, 0 }, { inner2, 0 }, { inner3, 0 }
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #1 (System.DivideByZeroException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #2 (System.NotImplementedException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #3 (Xunit.Sdk.XunitException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
                              );
        }
        public void NonXunitException()
        {
            var failureInfo = new FailureInformation {
                new Exception("This is the message")
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : This is the message", result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            var failureInfo = new FailureInformation {
                { new Exception("outer exception"), -1 },
                { new DivideByZeroException("inner exception"), 0 },
                { new XunitException("inner inner exception"), 1 }
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : outer exception" + Environment.NewLine +
                         "---- System.DivideByZeroException : inner exception" + Environment.NewLine +
                         "-------- inner inner exception", result);
        }
        public void NonXunitException()
        {
            Action testCode    = () => { throw new Exception(); };
            var    ex          = Record.Exception(testCode);
            var    failureInfo = new FailureInformation {
                ex
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.DoesNotContain(typeof(Record).FullName, result);
            Assert.DoesNotContain(typeof(XunitException).FullName, result);
            Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", result);
        }
        public void AggregateException()
        {
            var failureInfo = new FailureInformation {
                { new AggregateException(), -1 },
                { new DivideByZeroException("inner #1"), 0 },
                { new NotImplementedException("inner #2"), 0 },
                { new XunitException("this is crazy"), 0 },
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.AggregateException : One or more errors occurred." + Environment.NewLine
                         + "---- System.DivideByZeroException : inner #1" + Environment.NewLine
                         + "---- System.NotImplementedException : inner #2" + Environment.NewLine
                         + "---- this is crazy", result);
        }
        public void XunitException()
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

            Action testCode    = () => { throw new XunitException(); };
            var    ex          = Record.Exception(testCode);
            var    failureInfo = new FailureInformation {
                ex
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.DoesNotContain(typeof(Record).FullName, result);
            Assert.DoesNotContain(typeof(XunitException).FullName, result);
            Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            Action innerTestCode = () => { throw new DivideByZeroException(); };
            var    inner         = Record.Exception(innerTestCode);
            Action outerTestCode = () => { throw new Exception("message", inner); };
            var    outer         = Record.Exception(outerTestCode);
            var    failureInfo   = new FailureInformation {
                { outer, -1 }, { inner, 0 }
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
                              );
        }
        public void MissingExceptionTypes()
        {
            var failureInfo = new FailureInformation();

            failureInfo.AddMessage("Message 1");
            failureInfo.AddMessage("Message 2");
            failureInfo.AddMessage("Message 3");
            failureInfo.AddIndex(-1);
            failureInfo.AddIndex(0);
            failureInfo.AddIndex(0);
            failureInfo.AddExceptionType("ExceptionType1");
            failureInfo.AddExceptionType("Xunit.Sdk.ExceptionType2");

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("ExceptionType1 : Message 1" + Environment.NewLine +
                         "---- Message 2" + Environment.NewLine +
                         "----  : Message 3", result);
        }
        public void MissingStackTracesAndExceptionTypes()
        {
            var failureInfo = new FailureInformation();

            failureInfo.AddMessage("Message 1");
            failureInfo.AddMessage("Message 2");
            failureInfo.AddMessage("Message 3");
            failureInfo.AddIndex(-1);
            failureInfo.AddIndex(0);
            failureInfo.AddIndex(0);
            failureInfo.AddExceptionType("ExceptionType1");
            failureInfo.AddExceptionType("Xunit.Sdk.ExceptionType2");
            failureInfo.AddStackTrace("Stack Trace 1");
            failureInfo.AddStackTrace("Stack Trace 2");

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Equal("Stack Trace 1" + Environment.NewLine +
                         "----- Inner Stack Trace #1 (Xunit.Sdk.ExceptionType2) -----" + Environment.NewLine +
                         "Stack Trace 2" + Environment.NewLine +
                         "----- Inner Stack Trace #2 () -----" + Environment.NewLine, result);
        }
Exemple #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ErrorMessage"/> class.
 /// </summary>
 /// <param name="ex">The exception that represents the error message.</param>
 public ErrorMessage(Exception ex)
     : this(ex.GetType().FullName, ExceptionUtility.GetMessage(ex), ExceptionUtility.GetStackTrace(ex))
 {
 }
Exemple #11
0
 public TestFailed(ITestCase testCase, string testDisplayName, decimal executionTime, string output, Exception ex)
     : this(testCase, testDisplayName, executionTime, output, ex.GetType().FullName, ExceptionUtility.GetMessage(ex), ExceptionUtility.GetStackTrace(ex))
 {
 }