/// <summary>
        /// Provides a test batching strategy based on the provided arguments
        /// </summary>
        /// <param name="strategy">The base strategy to provide</param>
        /// <param name="settings">Adapter settings currently in use</param>
        /// <returns>An ITestBatchingStrategy instance or null if one cannot be provided</returns>
        private ITestBatchingStrategy GetBatchStrategy(TestBatch.Strategy strategy, BoostTestAdapterSettings settings)
        {
            TestBatch.CommandLineArgsBuilder argsBuilder = GetDefaultArguments;
            if (strategy != Strategy.TestCase)
            {
                argsBuilder = GetBatchedTestRunsArguments;
            }

            switch (strategy)
            {
            case Strategy.Source: return(new SourceTestBatchStrategy(this._testRunnerFactory, settings, argsBuilder));

            case Strategy.TestSuite: return(new TestSuiteTestBatchStrategy(this._testRunnerFactory, settings, argsBuilder));

            case Strategy.TestCase: return(new IndividualTestBatchStrategy(this._testRunnerFactory, settings, argsBuilder));
            }

            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Provides a test batching strategy based on the provided arguments
        /// </summary>
        /// <param name="strategy">The base strategy to provide</param>
        /// <param name="settings">Adapter settings currently in use</param>
        /// <param name="runContext">The RunContext for this TestCase. Determines whether the test should be debugged or not.</param>
        /// <returns>An ITestBatchingStrategy instance or null if one cannot be provided</returns>
        private ITestBatchingStrategy GetBatchStrategy(TestBatch.Strategy strategy, BoostTestAdapterSettings settings, IRunContext runContext)
        {
            TestBatch.CommandLineArgsBuilder argsBuilder = (string _source, BoostTestAdapterSettings _settings) =>
            {
                return(GetDefaultArguments(_source, _settings, runContext.IsBeingDebugged));
            };

            if (strategy != Strategy.TestCase)
            {
                // Disable stdout, stderr and memory leak detection since it is difficult
                // to distinguish from which test does portions of the output map to
                argsBuilder = (string _source, BoostTestAdapterSettings _settings) =>
                {
                    var args = GetDefaultArguments(_source, _settings, runContext.IsBeingDebugged);

                    // Disable standard error/standard output capture
                    args.StandardOutFile   = null;
                    args.StandardErrorFile = null;

                    // Disable memory leak detection
                    args.DetectMemoryLeaks = 0;

                    return(args);
                };
            }

            switch (strategy)
            {
            case Strategy.Source: return(new SourceTestBatchStrategy(_testRunnerFactory, settings, argsBuilder));

            case Strategy.TestSuite: return(new TestSuiteTestBatchStrategy(_testRunnerFactory, settings, argsBuilder));

            case Strategy.TestCase: return(new IndividualTestBatchStrategy(_testRunnerFactory, settings, argsBuilder));

            case Strategy.One: return(new OneShotTestBatchStrategy(_testRunnerFactory, settings, argsBuilder));
            }

            return(null);
        }