public void Specification(MethodInfo testMethod) { var inconclusive = false; var testResult = new SpecInfo(); var skip = testMethod.GetCustomAttributes().OfType<SkipAttributeContract>() .FirstOrDefault(); if (skip != null) { testResult.ReportSkipped(skip.Reason); inconclusive = true; } else { testResult.ReportSpecExecutionHasTriggered(); } try { testResult.Name = getSpecName(testMethod.DeclaringType, testMethod); var spec = testMethod.Invoke(this, new object[0]) as Specification; var formatter = MessageFormatterRegistry.GetFormatter(spec.SpecificationCategory); testResult.UseFormatter(formatter); if (skip != null) spec.EnrichDescription(testResult, formatter); else testResult = spec.Run(testResult, formatter); } catch (Exception e) { testResult.Exception = e; } var sb = new StringBuilder(); sb.AppendLine(getDescription(testResult)); var description = sb.ToString(); if(inconclusive) Assert.Inconclusive(testResult.Skipped.Reason); else if (!testResult.Passed) Assert.Fail(description); else { Console.WriteLine(description); Assert.Pass(description); } }
public void UpdateSkipInformation(SpecInfo specInfo) { var skipAttribute = MethodInfo.DeclaringType.GetCustomAttributes().FirstOrDefault(x => x is SkipAttributeContract) ?? MethodInfo.GetCustomAttributes().FirstOrDefault(x => x is SkipAttributeContract); if (skipAttribute == null) return; var typed = (SkipAttributeContract)skipAttribute; string reason = typed.Reason; specInfo.ReportSkipped(reason); }