public void ShouldUnpackResultValuesFromStronglyTypedTaskObjectsForAsyncCases() { using (var console = new RedirectedConsole()) { var discovery = new SelfTestDiscovery(); var execution = new TreatBoolReturnValuesAsAssertions(); Run <SampleAsyncTestClass>(discovery, execution) .ShouldBe( For <SampleAsyncTestClass>( ".BoolFalse failed: Boolean test case returned false!", ".BoolThrow failed: 'BoolThrow' failed!", ".BoolTrue passed", ".Pass passed", ".String passed", ".StringNull passed", ".Throw failed: 'Throw' failed!")); console.Lines().ShouldBe( "BoolFalse False", "BoolThrow null", "BoolTrue True", "Pass null", "String ABC", "StringNull null", "Throw null"); } }
public void ShouldProvideCaseReturnValuesToCustomBehaviors() { using (var console = new RedirectedConsole()) { var discovery = new SelfTestDiscovery(); var execution = new TreatBoolReturnValuesAsAssertions(); Run <SampleTestClass>(discovery, execution) .ShouldBe( For <SampleTestClass>( ".BoolFalse failed: Boolean test case returned false!", ".BoolThrow failed: 'BoolThrow' failed!", ".BoolTrue passed", ".Pass passed", ".String passed", ".StringNull passed", ".Throw failed: 'Throw' failed!")); console.Lines().ShouldBe( "BoolFalse False", "BoolThrow null", "BoolTrue True", "Pass null", "String ABC", "StringNull null", "Throw null"); } }
public void ShouldAccumulateCaseStatusCounts() { var discovery = new SelfTestDiscovery(); var execution = new CreateInstancePerCase(); var listener = new StubExecutionSummaryListener(); Run(listener, discovery, execution, typeof(FirstSampleTestClass), typeof(SecondSampleTestClass)); listener.ClassSummaries.Count.ShouldBe(2); listener.AssemblySummary.Count.ShouldBe(1); var classA = listener.ClassSummaries[0]; var classB = listener.ClassSummaries[1]; var assembly = listener.AssemblySummary[0]; classA.Passed.ShouldBe(1); classA.Failed.ShouldBe(1); classA.Skipped.ShouldBe(1); classA.Total.ShouldBe(3); classB.Passed.ShouldBe(1); classB.Failed.ShouldBe(2); classB.Skipped.ShouldBe(3); classB.Total.ShouldBe(6); assembly.Passed.ShouldBe(2); assembly.Failed.ShouldBe(3); assembly.Skipped.ShouldBe(4); assembly.Total.ShouldBe(9); }
public void ShouldAllowRandomShufflingOfCaseExecutionOrder() { var listener = new StubListener(); var candidateTypes = new[] { typeof(SampleIrrelevantClass), typeof(PassTestClass), typeof(int), typeof(PassFailTestClass), typeof(SkipTestClass) }; var discovery = new SelfTestDiscovery(); var execution = new CreateInstancePerClass(); discovery.Methods .Shuffle(new Random(1)); var bus = new Bus(listener); new Runner(GetType().Assembly, bus).Run(candidateTypes, discovery, execution); listener.Entries.ShouldBe( Self + "+PassTestClass.PassB passed", Self + "+PassTestClass.PassA passed", Self + "+PassFailTestClass.Fail failed: 'Fail' failed!", Self + "+PassFailTestClass.Pass passed", Self + "+SkipTestClass.SkipB skipped", Self + "+SkipTestClass.SkipA skipped"); }
public void ShouldReportFailuresForAllAffectedCasesWithoutShortCircuitingTestExecutionWhenCaseOrderingThrows() { var listener = new StubListener(); var candidateTypes = new[] { typeof(SampleIrrelevantClass), typeof(PassTestClass), typeof(int), typeof(PassFailTestClass), typeof(SkipTestClass), typeof(BuggyParameterGenerationTestClass) }; var discovery = new SelfTestDiscovery(); var execution = new CreateInstancePerClass(); discovery.Methods .OrderBy((Func <MethodInfo, string>)(x => throw new Exception("OrderBy lambda expression threw!"))); discovery.Parameters .Add <BuggyParameterSource>(); var bus = new Bus(listener); new Runner(GetType().Assembly, bus).Run(candidateTypes, discovery, execution); //NOTE: Since the ordering of cases is deliberately failing, and since member order via reflection // is undefined, we explicitly sort the listener Entries here to avoid making a brittle assertion. var strings = listener.Entries.OrderBy(x => x).ToArray(); strings.ShouldBe( Self + "+BuggyParameterGenerationTestClass.ParameterizedA failed: Exception thrown while attempting to yield input parameters for method: ParameterizedA", Self + "+BuggyParameterGenerationTestClass.ParameterizedA failed: OrderBy lambda expression threw!", Self + "+BuggyParameterGenerationTestClass.ParameterizedB failed: Exception thrown while attempting to yield input parameters for method: ParameterizedB", Self + "+BuggyParameterGenerationTestClass.ParameterizedB failed: OrderBy lambda expression threw!", Self + "+PassFailTestClass.Fail failed: 'Fail' failed!", Self + "+PassFailTestClass.Fail failed: OrderBy lambda expression threw!", Self + "+PassFailTestClass.Pass failed: OrderBy lambda expression threw!", Self + "+PassFailTestClass.Pass passed", Self + "+PassTestClass.PassA failed: OrderBy lambda expression threw!", Self + "+PassTestClass.PassA passed", Self + "+PassTestClass.PassB failed: OrderBy lambda expression threw!", Self + "+PassTestClass.PassB passed", Self + "+SkipTestClass.SkipA failed: OrderBy lambda expression threw!", Self + "+SkipTestClass.SkipA skipped", Self + "+SkipTestClass.SkipB failed: OrderBy lambda expression threw!", Self + "+SkipTestClass.SkipB skipped"); }
public void ShouldExecuteAllCasesInAllDiscoveredTestClasses() { var listener = new StubListener(); var discovery = new SelfTestDiscovery(); var execution = new CreateInstancePerClass(); var bus = new Bus(listener); new Runner(bus).RunTypes(GetType().Assembly, discovery, execution, typeof(SampleIrrelevantClass), typeof(PassTestClass), typeof(int), typeof(PassFailTestClass), typeof(SkipTestClass)); listener.Entries.ShouldEqual( Self + "+PassTestClass.PassA passed", Self + "+PassTestClass.PassB passed", Self + "+PassFailTestClass.Fail failed: 'Fail' failed!", Self + "+PassFailTestClass.Pass passed", Self + "+SkipTestClass.SkipA skipped", Self + "+SkipTestClass.SkipB skipped"); }