/// <summary> /// Starts a mutation test run /// </summary> /// <exception cref="StrykerInputException">For managed exceptions</exception> /// <param name="options">The user options</param> /// <param name="initialLogMessages"> /// Allows to pass log messages that occured before the mutation test. /// The messages will be written to the logger after it was configured. /// </param> public StrykerRunResult RunMutationTest(StrykerOptions options, IEnumerable <LogMessage> initialLogMessages = null) { // start stopwatch var stopwatch = new Stopwatch(); stopwatch.Start(); // Create output dir with gitignore _fileSystem.Directory.CreateDirectory(options.OutputPath); _fileSystem.File.Create(Path.Combine(options.OutputPath, ".gitignore")).Close(); using (var file = _fileSystem.File.CreateText(Path.Combine(options.OutputPath, ".gitignore"))) { file.WriteLine("*"); } // setup logging ApplicationLogging.ConfigureLogger(options.LogOptions, initialLogMessages); var logger = ApplicationLogging.LoggerFactory.CreateLogger <StrykerRunner>(); logger.LogDebug("Stryker started with options: {0}", JsonConvert.SerializeObject(options, new StringEnumConverter())); try { // initialize if (_reporter == null) { _reporter = ReporterFactory.Create(options); } _initialisationProcess = _initialisationProcess ?? new InitialisationProcess(); _input = _initialisationProcess.Initialize(options); _mutationTestProcess = _mutationTestProcess ?? new MutationTestProcess( mutationTestInput: _input, reporter: _reporter, mutationTestExecutor: new MutationTestExecutor(_input.TestRunner), options: options); // initial test _input.TimeoutMs = _initialisationProcess.InitialTest(options, out var nbTests); // mutate _mutationTestProcess.Mutate(); if (options.Optimizations.HasFlag(OptimizationFlags.SkipUncoveredMutants) || options.Optimizations.HasFlag(OptimizationFlags.CoverageBasedTest)) { logger.LogInformation($"Capture mutant coverage using '{options.OptimizationMode}' mode."); // coverage _mutationTestProcess.GetCoverage(); } // test mutations and return results return(_mutationTestProcess.Test(options)); } catch (Exception ex) when(!(ex is StrykerInputException)) { logger.LogError(ex, "An error occurred during the mutation test run "); throw; } finally { // log duration stopwatch.Stop(); logger.LogInformation("Time Elapsed {0}", stopwatch.Elapsed); } }
public JsonReporterTests() { ApplicationLogging.ConfigureLogger(new LogOptions(Serilog.Events.LogEventLevel.Fatal, false, null)); ApplicationLogging.LoggerFactory.CreateLogger <JsonReporterTests>(); }