public void Stack_CreateFromAggregatedExceptionWithInnerException() { bool caughtException = false; try { File.Create(Path.GetInvalidFileNameChars()[0].ToString(), 0); } catch (ArgumentException exception) { var innerException1 = new InvalidOperationException("Test exception 1."); var innerException2 = new InvalidOperationException("Test exception 2.", exception); var aggregated = new AggregateException(innerException1, innerException2); IList<Stack> stacks = Stack.CreateStacks(aggregated).ToList(); stacks.Count.Should().Be(4); aggregated.StackTrace.Should().Be(null); Assert.AreEqual("[No frames]", stacks[0].ToString()); Assert.AreEqual("[No frames]", stacks[1].ToString()); Assert.AreEqual("[No frames]", stacks[2].ToString()); Assert.AreEqual(exception.StackTrace, stacks[3].ToString()); Assert.AreEqual(aggregated.FormatMessage(), stacks[0].Message); Assert.AreEqual(innerException1.FormatMessage(), stacks[1].Message); Assert.AreEqual(innerException2.FormatMessage(), stacks[2].Message); Assert.AreEqual(exception.FormatMessage(), stacks[3].Message); caughtException = true; } Assert.IsTrue(caughtException); }