public void ShouldReportPassFailSkipCounts() { using (var console = new RedirectedConsole()) { var listener = new ConsoleListener(); var assembly = typeof(ConsoleListener).Assembly; var version = assembly.GetName().Version; var assemblyResult = new AssemblyResult(assembly.Location); var conventionResult = new ConventionResult("Fake Convention"); var classResult = new ClassResult("Fake Class"); assemblyResult.Add(conventionResult); conventionResult.Add(classResult); classResult.Add(CaseResult.Passed("A", TimeSpan.Zero)); classResult.Add(CaseResult.Failed("B", TimeSpan.Zero, new ExceptionInfo(new Exception(), new AssertionLibraryFilter()))); classResult.Add(CaseResult.Failed("C", TimeSpan.Zero, new ExceptionInfo(new Exception(), new AssertionLibraryFilter()))); classResult.Add(CaseResult.Skipped("D", "Reason")); classResult.Add(CaseResult.Skipped("E", "Reason")); classResult.Add(CaseResult.Skipped("F", "Reason")); listener.AssemblyCompleted(assembly, assemblyResult); console.Lines().ShouldEqual("1 passed, 2 failed, 3 skipped, took 0.00 seconds (Fixie " + version + ")."); } }
ConventionResult Run(Convention convention, Type[] candidateTypes) { var classDiscoverer = new ClassDiscoverer(convention.Config); var conventionResult = new ConventionResult(convention.GetType().FullName); var classRunner = new ClassRunner(listener, convention.Config); foreach (var testClass in classDiscoverer.TestClasses(candidateTypes)) { var classResult = classRunner.Run(testClass); conventionResult.Add(classResult); } return(conventionResult); }
public ConventionResult Execute(Listener listener, params Type[] candidateTypes) { var conventionResult = new ConventionResult(GetType().FullName); foreach (var testClass in Classes.Filter(candidateTypes)) { var classResult = new ClassResult(testClass.FullName); var methods = Methods.Filter(testClass); var cases = methods.SelectMany(method => CasesForMethod(testClass, method)).ToArray(); var casesBySkipState = cases.ToLookup(CaseExecution.SkipPredicate); var casesToSkip = casesBySkipState[true]; var casesToExecute = casesBySkipState[false]; foreach (var @case in casesToSkip) { var skipResult = new SkipResult(@case, CaseExecution.SkipReasonProvider(@case)); listener.CaseSkipped(skipResult); classResult.Add(CaseResult.Skipped(skipResult.Case.Name, skipResult.Reason)); } var caseExecutions = casesToExecute.Select(@case => new CaseExecution(@case)).ToArray(); if (caseExecutions.Any()) { ClassExecution.Behavior.Execute(testClass, this, caseExecutions); foreach (var caseExecution in caseExecutions) { if (caseExecution.Exceptions.Any()) { var failResult = new FailResult(caseExecution, AssertionLibrary); listener.CaseFailed(failResult); classResult.Add(CaseResult.Failed(failResult.Case.Name, failResult.Duration, failResult.ExceptionSummary)); } else { var passResult = new PassResult(caseExecution); listener.CasePassed(passResult); classResult.Add(CaseResult.Passed(passResult.Case.Name, passResult.Duration)); } } } conventionResult.Add(classResult); } return(conventionResult); }