public string RunTest(ref TestMethodTask task) { var fixieAssembly = Assembly.LoadFrom(fixieAssemblyPath); var runnerType = fixieAssembly.GetExportedTypes().First(t => t.FullName = "Fixie.Runner"); var listener = new FixieListener(); var runner = (dynamic)Activator.CreateInstance(runnerType) var server = var listener = new FixieListener(server, this, task.IsParameterized); var runner = new Runner(listener); var testAssembly = Assembly.LoadFile(task.AssemblyLocation); var testClass = testAssembly.GetType(task.TypeName); var testMethod = testClass.GetMethod(task.MethodName); var outcome = runner.RunMethod(testAssembly, testMethod); if (task.IsParameterized) { TaskResult result = outcome.Failed == 0 ? TaskResult.Success : TaskResult.Error; task.CloseTask(result, task.MethodName); } }
private void RunMethodTask(TestMethodTask task) { var appDomain = AppDomain.CurrentDomain; appDomain.AssemblyResolve += OnAssemblyResolve; try { Directory.SetCurrentDirectory(Path.GetDirectoryName(task.AssemblyLocation)); var fixieAssemblyPath = Path.Combine(Path.GetDirectoryName(task.AssemblyLocation), "Fixie.dll"); if (!IsRequiredFixieVersion(fixieAssemblyPath, RequiredFixieVersion.RequiredVersion)) { task.CloseTask( TaskResult.Inconclusive, string.Format("Test runner required Fixie version {0}", RequiredFixieVersion.RequiredVersion)); return; } var listener = new FixieListener(server, this, task.IsParameterized); var runner = new Runner(listener); var testAssembly = Assembly.LoadFile(task.AssemblyLocation); var testClass = testAssembly.GetType(task.TypeName); var testMethod = testClass.GetMethod(task.MethodName); var outcome = runner.RunMethod(testAssembly, testMethod); if (task.IsParameterized) { TaskResult result = outcome.Failed == 0 ? TaskResult.Success : TaskResult.Error; task.CloseTask(result, task.MethodName); } } catch (Exception ex) { task.CloseTask(TaskResult.Exception, ex.Message); FinishCurrentTask(task); } finally { appDomain.AssemblyResolve -= OnAssemblyResolve; } }
private bool IsParentMethodTask(TestMethodTask methodTask, TestCaseTask caseTask) { return methodTask.AssemblyLocation == caseTask.AssemblyLocation && methodTask.TypeName == caseTask.TypeName && methodTask.MethodName == caseTask.MethodName; }
private bool IsParentMethodTask(TestMethodTask methodTask, TestCaseTask caseTask) { return(methodTask.AssemblyLocation == caseTask.AssemblyLocation && methodTask.TypeName == caseTask.TypeName && methodTask.MethodName == caseTask.MethodName); }