in GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs [91:122]
private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun)
{
IDictionary<TestCase, int> durations = null;
try
{
var serializer = new TestDurationSerializer();
durations = serializer.ReadTestDurations(testCasesToRun);
foreach (KeyValuePair<TestCase, int> duration in durations)
{
if (!_schedulingAnalyzer.AddExpectedDuration(duration.Key, duration.Value))
_logger.DebugWarning(String.Format(Resources.TestCaseInAnalyzer, duration.Key.FullyQualifiedName));
}
}
catch (InvalidTestDurationsException e)
{
_logger.LogWarning(string.Format(Resources.ReadTestDurationError, e.Message));
}
ITestsSplitter splitter;
if (durations == null || durations.Count < testCasesToRun.Length)
{
splitter = new NumberBasedTestsSplitter(testCasesToRun, _settings);
_logger.DebugInfo(Resources.UsingSplitterOnNumber);
}
else
{
splitter = new DurationBasedTestsSplitter(durations, _settings);
_logger.DebugInfo(Resources.UsingSplitterOnDuration);
}
return splitter;
}