public void DiscoverTests(IEnumerable <string> sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { if (Environment.GetEnvironmentVariable("ATTACH_DEBUGGER_CHUTZPAH") != null) { Debugger.Launch(); } ChutzpahTracer.TraceInformation("Begin Test Adapter Discover Tests"); var settingsProvider = discoveryContext.RunSettings.GetSettings(AdapterConstants.SettingsName) as ChutzpahAdapterSettingsProvider; var settings = settingsProvider != null ? settingsProvider.Settings : new ChutzpahAdapterSettings(); ChutzpahTracingHelper.Toggle(settings.EnabledTracing); var testOptions = new TestOptions { MaxDegreeOfParallelism = settings.MaxDegreeOfParallelism, ChutzpahSettingsFileEnvironments = new ChutzpahSettingsFileEnvironments(settings.ChutzpahSettingsFileEnvironments) }; ChutzpahTracer.TraceInformation("Sending discovered tests to test case discovery sink"); var callback = new ParallelRunnerCallbackAdapter(new DiscoveryCallback(logger, discoverySink)); var testCases = testRunner.DiscoverTests(sources, testOptions, callback); ChutzpahTracer.TraceInformation("End Test Adapter Discover Tests"); }
public void DiscoverTests(IEnumerable <string> sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { ChutzpahTracer.TraceInformation("Begin Test Adapter Discover Tests"); var settingsProvider = discoveryContext.RunSettings.GetSettings(ChutzpahAdapterSettings.SettingsName) as ChutzpahAdapterSettingsService; var settings = settingsProvider != null ? settingsProvider.Settings : new ChutzpahAdapterSettings(); ChutzpahTracingHelper.Toggle(settings.EnabledTracing); var testOptions = new TestOptions { TestFileTimeoutMilliseconds = settings.TimeoutMilliseconds, TestingMode = settings.TestingMode, MaxDegreeOfParallelism = settings.MaxDegreeOfParallelism }; IList <TestError> errors; var testCases = testRunner.DiscoverTests(sources, testOptions, out errors); ChutzpahTracer.TraceInformation("Sending discovered tests to test case discovery sink"); foreach (var testCase in testCases) { var vsTestCase = testCase.ToVsTestCase(); discoverySink.SendTestCase(vsTestCase); } foreach (var error in errors) { logger.SendMessage(TestMessageLevel.Error, RunnerCallback.FormatFileErrorMessage(error)); } ChutzpahTracer.TraceInformation("End Test Adapter Discover Tests"); }
/// <summary> /// Executes the initial testrun using the given testrunner /// </summary> /// <param name="testRunner"></param> /// <param name="options">Stryker options</param> /// <returns>The duration of the initial testrun</returns> public InitialTestRun InitialTest(StrykerOptions options, ITestRunner testRunner) { var message = testRunner.DiscoverTests() is var total && total.Count == 0 ? "Unable to detect" : total.Count.ToString(); _logger.LogInformation("Total number of tests found: {0}.", message); _logger.LogInformation("Initial testrun started."); // Setup a stopwatch to record the initial test duration var stopwatch = new Stopwatch(); stopwatch.Start(); var initTestRunResult = testRunner.InitialTest(); // Stop stopwatch immediately after testrun stopwatch.Stop(); // timings _logger.LogDebug("Initial testrun output: {0}.", initTestRunResult.ResultMessage); if (!initTestRunResult.FailingTests.IsEmpty) { var failingTestsCount = initTestRunResult.FailingTests.Count; _logger.LogWarning($"{(failingTestsCount == 1 ? "A test is ": $"{failingTestsCount} tests are")} failing. Stryker will continue but outcome will be impacted."); if (((double)failingTestsCount) / initTestRunResult.RanTests.Count >= .5) { throw new InputException("Initial testrun has more than 50% failing tests.", initTestRunResult.ResultMessage); } }