public RunTests(Executor executor, string _type, List <string> _methods, object _handler) { Guard.ArgumentNotNull("_type", _type); Guard.ArgumentNotNull("_methods", _methods); ExecutorCallback handler = ExecutorCallback.Wrap(_handler); Type realType = executor.assembly.GetType(_type); Guard.ArgumentValid("_type", "Type " + _type + " could not be found", realType != null); ITypeInfo type = Reflector.Wrap(realType); ITestClassCommand testClassCommand = TestClassCommandFactory.Make(type); List <IMethodInfo> methods = new List <IMethodInfo>(); foreach (string _method in _methods) { try { IMethodInfo method = type.GetMethod(_method); Guard.ArgumentValid("_methods", "Could not find method " + _method + " in type " + _type, method != null); methods.Add(method); } catch (AmbiguousMatchException) { throw new ArgumentException("Ambiguous method named " + _method + " in type " + _type); } } if (testClassCommand == null) { ClassResult result = new ClassResult(type.Type); OnTestResult(result, handler); return; } executor.RunOnSTAThreadWithPreservedWorkingDirectory(() => TestClassCommandRunner.Execute(testClassCommand, methods, command => OnTestStart(command, handler), result => OnTestResult(result, handler))); }