internal TestAssemblySettings GetSettings(string source) { var testAssemblySettings = new TestAssemblySettings(); // Load the source. var testAssembly = PlatformServiceProvider.Instance.FileOperations.LoadAssembly(source, isReflectionOnly: false); var parallelizeAttribute = this.reflectHelper.GetParallelizeAttribute(testAssembly); if (parallelizeAttribute != null) { testAssemblySettings.Workers = parallelizeAttribute.Workers; testAssemblySettings.Scope = parallelizeAttribute.Scope; if (testAssemblySettings.Workers == 0) { testAssemblySettings.Workers = Environment.ProcessorCount; } } testAssemblySettings.CanParallelizeAssembly = !this.reflectHelper.IsDoNotParallelizeSet(testAssembly); var classCleanupSequencingAttribute = this.reflectHelper.GetClassCleanupAttribute(testAssembly); if (classCleanupSequencingAttribute != null) { testAssemblySettings.ClassCleanupLifecycle = classCleanupSequencingAttribute.LifecyclePosition; } return(testAssemblySettings); }
private void InitializeClassCleanupManager( string source, UnitTestRunner testRunner, ICollection <TestCase> testsToRun, TestAssemblySettings sourceSettings) { var unitTestElements = testsToRun.Select(e => e.ToUnitTestElement(source)).ToArray(); testRunner.InitializeClassCleanupManager(unitTestElements, sourceSettings.ClassCleanupLifecycle); }
private void InitializeClassCleanupManager(string source, UnitTestRunner testRunner, ICollection <TestCase> testsToRun, TestAssemblySettings sourceSettings) { try { var unitTestElements = testsToRun.Select(e => e.ToUnitTestElement(source)).ToArray(); testRunner.InitializeClassCleanupManager(unitTestElements, (int)sourceSettings.ClassCleanupLifecycle); } catch (Exception ex) { // source might not support this if it's legacy make sure it's supported by checking for the type if (ex.GetType().FullName != "System.Runtime.Remoting.RemotingException") { throw; } } }