Exemplo n.º 1
0
        //Exposed for testing
        internal ITestEngineRunner GetEngineRunner()
        {
            if (_engineRunner == null)
            {
                // Expand any project subpackages
                _packageAnalyzer.ExpandProjectPackages(TestPackage);

                // Add package settings to reflect the target runtime
                // and test framework usage of each assembly.
                foreach (var package in TestPackage.Select(p => p.IsAssemblyPackage()))
                {
                    if (File.Exists(package.FullName))
                    {
                        _packageAnalyzer.ApplyImageSettings(package);
                    }
                }

                // Use SelectRuntimeFramework for its side effects.
                // Info will be left behind in the package about
                // each contained assembly, which will subsequently
                // be used to determine how to run the assembly.
                _runtimeService.SelectRuntimeFramework(TestPackage);

                _engineRunner = _testRunnerFactory.MakeTestRunner(TestPackage);
            }

            return(_engineRunner);
        }
        public void Initialize()
        {
            // Add all services needed by any of our TestEngineRunners
            _services = new ServiceContext();
            _services.Add(new FakeExtensionService());
            _services.Add(new FakeProjectService());
            _services.Add(new TestFrameworkService());
            var packageSettingsService = new TestPackageAnalyzer();

            _services.Add(packageSettingsService);
#if !NETCOREAPP2_1
            _services.Add(new FakeRuntimeService());
            //_services.Add(new TestAgency("ProcessRunnerTests", 0));
#endif
            //_services.Add(new FakeTestRunnerFactory());
            _services.ServiceManager.StartServices();

            var mockAssemblyPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "mock-assembly.dll");

            var assemblies = new List <string>();
            for (int i = 0; i < _numAssemblies; i++)
            {
                assemblies.Add(mockAssemblyPath);
            }

            _package = new TestPackage(assemblies);
            packageSettingsService.ApplyImageSettings(_package);

            // HACK: Depends on the fact that all TestEngineRunners support this constructor
            _runner = (TRunner)Activator.CreateInstance(typeof(TRunner), _services, _package);
        }