/// <summary> /// Initializes a new instance of the <see cref="TestingEngine"/> class. /// </summary> private TestingEngine(Configuration configuration, TestMethodInfo testMethodInfo) { this.Configuration = configuration; this.TestMethodInfo = testMethodInfo; this.DefaultLogger = new ConsoleLogger() { LogLevel = configuration.LogLevel }; this.Logger = this.DefaultLogger; this.Profiler = new Profiler(); this.PerIterationCallbacks = new HashSet <Action <uint> >(); this.TestReport = new TestReport(configuration); this.ReadableTrace = string.Empty; this.ReproducibleTrace = string.Empty; this.CancellationTokenSource = new CancellationTokenSource(); this.PrintGuard = 1; if (configuration.IsDebugVerbosityEnabled) { IO.Debug.IsEnabled = true; } if (configuration.SchedulingStrategy is "portfolio") { var msg = "Portfolio testing strategy is only " + "available in parallel testing."; if (configuration.DisableEnvironmentExit) { throw new Exception(msg); } else { Error.ReportAndExit(msg); } } this.SchedulingContext = SchedulingContext.Setup(configuration, this.Logger); if (TelemetryClient is null) { TelemetryClient = new CoyoteTelemetryClient(this.Configuration); } }