protected internal static void InvokeTest(ConsoleMethod consoleMethod, Func <MethodInfo, object[]> parameterProvider, bool isolateMethodCalls = true) { object[] parameters = parameterProvider(consoleMethod.Method); MethodInfo invokeTarget = typeof(ConsoleMethod).GetMethod("Invoke"); if (consoleMethod.Method.IsStatic) { if (isolateMethodCalls) { CommandLineInterface.InvokeInSeparateAppDomain(invokeTarget, consoleMethod); } else { CommandLineInterface.InvokeInCurrentAppDomain(invokeTarget, consoleMethod); } } else { string typeName = consoleMethod.Method.DeclaringType.Name; ConstructorInfo ctor = consoleMethod.Method.DeclaringType.GetConstructor(Type.EmptyTypes); if (ctor == null) { ExceptionHelper.ThrowInvalidOperation("The declaring type {0} of method {1} does not have a parameterless constructor, test cannot be run.", typeName, consoleMethod.Method.Name); } object instance = ctor.Invoke(null); Expect.IsNotNull(instance, string.Format("Unable to instantiate declaring type {0} of method {1}", typeName, consoleMethod.Method.Name)); consoleMethod.Provider = instance; if (isolateMethodCalls) { CommandLineInterface.InvokeInSeparateAppDomain(invokeTarget, consoleMethod); } else { CommandLineInterface.InvokeInCurrentAppDomain(invokeTarget, consoleMethod); } } }