protected override Task <RunSummary> RunTestCaseAsync(IXunitTestCase testCase)
        {
            if (testCase.GetType() == typeof(XunitTestCase))
            {
                // If we get here this is a 'regular' test case, not something that represents a skipped test.
                //
                // We can take control of it's invocation thusly.
                var runner = new AspNetTestCaseRunner(
                    testCase,
                    testCase.DisplayName,
                    testCase.SkipReason,
                    _constructorArguments,
                    testCase.TestMethodArguments,
                    MessageBus,
                    new ExceptionAggregator(Aggregator),
                    CancellationTokenSource);
                return(runner.RunAsync());
            }

            if (testCase.GetType() == typeof(XunitTheoryTestCase))
            {
                // If we get here this is a 'regular' theory test case, not something that represents a skipped test.
                //
                // We can take control of it's invocation thusly.
                var runner = new AspNetTheoryTestCaseRunner(
                    testCase,
                    testCase.DisplayName,
                    testCase.SkipReason,
                    _constructorArguments,
                    _diagnosticMessageSink,
                    MessageBus,
                    new ExceptionAggregator(Aggregator),
                    CancellationTokenSource);
                return(runner.RunAsync());
            }

            return(base.RunTestCaseAsync(testCase));
        }
        private IXunitTestCase ConvertTestCase(IXunitTestCase testCase, TestMethodDisplay defaultMethodDisplay, int timeout, bool useStaThread)
        {
            var theory = testCase as XunitTheoryTestCase;

            if (theory != null)
            {
                return(ConvertTheoryTestCase(theory, defaultMethodDisplay, this.diagnosticMessageSink_, timeout, useStaThread));
            }

            if (testCase.GetType( ) == typeof(XunitTestCase))
            {
                return(ConvertXunitTestCase((XunitTestCase)testCase, defaultMethodDisplay, this.diagnosticMessageSink_, timeout, useStaThread));
            }

            return(testCase);
        }