/// <summary> /// Reports an assertion failure. /// </summary> /// <param name="testContext"></param> /// <param name="testInfoData"></param> /// <param name="testStepResult"></param> public void Run(ITestContext testContext, TestInfoData testInfoData, TestStepResult testStepResult) { if (testStepResult.TestOutcome == TestOutcome.Failed) { MbUnitCppAssertionFailure failure = testStepResult.Failure; var builder = new AssertionFailureBuilder(failure.Description); if (failure.HasExpectedValue && failure.HasActualValue && failure.Diffing) { builder.AddRawExpectedAndActualValuesWithDiffs(failure.ExpectedValue, failure.ActualValue); } else if (failure.HasUnexpectedValue && failure.HasActualValue && failure.Diffing) { builder.AddRawLabeledValuesWithDiffs("Unexpected Value", failure.UnexpectedValue, "Actual Value", failure.ActualValue); } else { if (failure.HasExpectedValue) builder.AddRawExpectedValue(failure.ExpectedValue); if (failure.HasActualValue) builder.AddRawActualValue(failure.ActualValue); if (failure.HasUnexpectedValue) builder.AddRawLabeledValue("Unexpected Value", failure.UnexpectedValue); } foreach (var extra in failure.ExtraLabeledValues) { builder.AddRawLabeledValue(extra.First, extra.Second); } if (failure.Message.Length > 0) builder.SetMessage(failure.Message); builder.SetStackTrace(testInfoData.GetStackTraceData(failure.Line)); builder.ToAssertionFailure().WriteTo(testContext.LogWriter.Failures); } }
public void CanSetStackTraceToNullToOmit() { AssertionFailureBuilder builder = new AssertionFailureBuilder("Description"); builder.SetStackTrace(null); Assert.IsNull(builder.ToAssertionFailure().StackTrace); }
public void CanSetStackTrace() { AssertionFailureBuilder builder = new AssertionFailureBuilder("Description"); builder.SetStackTrace(new StackTraceData("Stack")); Assert.AreEqual("Stack", builder.ToAssertionFailure().StackTrace.ToString()); }