示例#1
0
        public void DiscoverTests(ITestCaseDiscoverySink discoverySink, IMessageLogger messageLogger, IDiscoveryContext discoveryContext)
        {
            var settings = settingsRepository.Load(discoveryContext);

            var outputLogger = loggerFactory.CreateOutput(messageLogger, settings);

            outputLogger.Info("Discovery started");

            IEnumerable <IEnumerable <DiscoveredExample> > groupedSpecifications;

            using (var crossDomainLogger = new CrossDomainLogger(outputLogger))
            {
                groupedSpecifications =
                    from binaryPath in sources
                    select binaryTestDiscoverer.Discover(binaryPath, outputLogger, crossDomainLogger);
            }

            var specifications = groupedSpecifications.SelectMany(group => group);

            var testCases = specifications.Select(testCaseMapper.FromDiscoveredExample);

            testCases.Do(discoverySink.SendTestCase);

            outputLogger.Info("Discovery finished");
        }
        public void RunTests(IFrameworkHandle frameworkHandle, IRunContext runContext)
        {
            var settings = settingsRepository.Load(runContext);

            var outputLogger = loggerFactory.CreateOutput(frameworkHandle, settings);

            outputLogger.Info(String.Format("Execution by {0} started", sourceDescription));

            isCanceled = false;

            using (var progressRecorder = progressRecorderFactory.Create((ITestExecutionRecorder)frameworkHandle))
                using (var crossDomainLogger = new CrossDomainLogger(outputLogger))
                {
                    foreach (var item in testableItems)
                    {
                        if (isCanceled)
                        {
                            break;
                        }

                        progressRecorder.BinaryPath = item.BinaryPath;

                        // TODO pass canceler to ITestableItem.Execute

                        item.Execute(binaryTestExecutor, progressRecorder, outputLogger, crossDomainLogger);
                    }
                }

            outputLogger.Info(String.Format("Execution by {0} finished", sourceDescription));
        }