private void Compare(Exception ex, ErrorInfo err, int level = 1) { Console.WriteLine("Level " + level); Assert.Equal(ex.GetType().FullName, err.Type); if (String.IsNullOrEmpty(ex.StackTrace)) Assert.Equal(0, err.StackTrace.Count); else { string[] lines = Regex.Split(ex.StackTrace, "\r\n|\r|\n"); Assert.Equal(lines.Length, err.StackTrace.Count); Assert.Equal(ex.StackTrace, err.StackTrace.ToString()); } // TODO: Fix formatting bugs with inner exception tostring if (level == 1) Assert.Equal(ex.ToString(), err.ToString()); if (ex.InnerException != null) Compare(ex.InnerException, err.Inner, level + 1); }