public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            testCases     = new List <TestCase>();
            discoverySink = autoSubstitute.Resolve <ITestCaseDiscoverySink>();
            discoverySink.When(sink => sink.SendTestCase(Arg.Any <TestCase>())).Do(callInfo =>
            {
                var discoveredTestCase = callInfo.Arg <TestCase>();

                testCases.Add(discoveredTestCase);
            });

            binaryTestDiscoverer = autoSubstitute.Resolve <IBinaryTestDiscoverer>();

            binaryTestDiscoverer.Discover(null, null, null).ReturnsForAnyArgs(callInfo =>
            {
                string binaryPath = callInfo.Arg <string>();

                if (sources.Contains(binaryPath))
                {
                    return(discoveredExamplesBySource[binaryPath]);
                }
                else
                {
                    return(new DiscoveredExample[0]);
                }
            });

            var testCaseMapper = autoSubstitute.Resolve <ITestCaseMapper>();

            testCaseMapper.FromDiscoveredExample(null).ReturnsForAnyArgs(callInfo =>
            {
                var discoveredExample = callInfo.Arg <DiscoveredExample>();

                var testCase = new TestCase(discoveredExample.FullName, Constants.ExecutorUri, discoveredExample.SourceFilePath);

                return(testCase);
            });

            var settingsRepository = autoSubstitute.Resolve <ISettingsRepository>();

            var messageLogger = autoSubstitute.Resolve <IMessageLogger>();

            outputLogger = autoSubstitute.Resolve <IOutputLogger>();
            var loggerFactory = autoSubstitute.Resolve <ILoggerFactory>();

            loggerFactory.CreateOutput(messageLogger, Arg.Any <IAdapterSettings>()).Returns(outputLogger);

            discoverer = new MultiSourceTestDiscoverer(sources, binaryTestDiscoverer, testCaseMapper, settingsRepository, loggerFactory);

            discoverer.DiscoverTests(discoverySink, messageLogger, autoSubstitute.Resolve <IDiscoveryContext>());
        }