public void CaseFailed(FailResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;

            if (!string.IsNullOrWhiteSpace(result.Output))
            {
                server.TaskOutput(task, result.Output, TaskOutputType.STDOUT);
            }
            if (result.Exceptions != null && result.Exceptions.Any())
            {
                server.TaskException(task, result.Exceptions.Select(ex => new TaskException(ex)).ToArray());
                task.CloseTask(TaskResult.Exception, result.Case.Name);
            }
            else
            {
                task.CloseTask(TaskResult.Error, result.Case.Name);
            }


            if (isParameterized)
            {
                nodeRunner.FinishCurrentTask(task);
            }
        }
        public void CaseFailed(FailResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;
            if (!string.IsNullOrWhiteSpace(result.Output))
                server.TaskOutput(task, result.Output, TaskOutputType.STDOUT);
            if (result.Exceptions != null && result.Exceptions.Any())
            {
                server.TaskException(task, result.Exceptions.Select(ex => new TaskException(ex)).ToArray());
                task.CloseTask(TaskResult.Exception, result.Case.Name);
            }
            else
            {
                task.CloseTask(TaskResult.Error, result.Case.Name);
            }

            if (isParameterized)
                nodeRunner.FinishCurrentTask(task);
        }
예제 #3
0
        private IUnitTestElement GetDynamicCaseElement(
            Dictionary <RemoteTask, IUnitTestElement> tasks,
            TestCaseTask caseTask)
        {
            var methodElement =
                tasks.Where(kvp => kvp.Key is TestMethodTask && IsParentMethodTask(kvp.Key as TestMethodTask, caseTask))
                .Select(kvp => kvp.Value).FirstOrDefault() as TestMethodElement;

            if (methodElement == null)
            {
                return(null);
            }

            using (ReadLockCookie.Create())
            {
                var project = methodElement.GetProject();
                if (project == null)
                {
                    return(null);
                }

                var element = UnitTestElementFactory.GetTestCase(
                    project,
                    methodElement,
                    caseTask.MethodName + caseTask.Parameters);

                // Make sure we return an element, even if the system already knows about it. If it's
                // part of the test run, it will already have been added in GetTaskSequence, and this
                // method (GetDynamicElement) doesn't get called. But if you try and run just a single
                // theory, Fixie will run ALL theories for that method, and will need the elements
                // for those theories not included in the task sequence. This is necessary because if
                // one of those theories throws an exception, UnitTestLaunch.TaskException doesn't
                // have an element to report against, and displays a message box
                if (element != null)
                {
                    // If the element is invalid, it's been removed from its parent, so add it back,
                    // and reset the state
                    if (element.State == UnitTestElementState.Invalid)
                    {
                        element.State  = UnitTestElementState.Dynamic;
                        element.Parent = methodElement;
                    }
                    return(element);
                }

                return(UnitTestElementFactory.CreateTestCase(
                           this,
                           project,
                           methodElement,
                           caseTask.MethodName + caseTask.Parameters));
            }
        }
        public void CasePassed(PassResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;
            if (!string.IsNullOrWhiteSpace(result.Output))
                server.TaskOutput(task, result.Output, TaskOutputType.STDOUT);
            task.CloseTask(TaskResult.Success, result.Case.Name);

            if (isParameterized)
                nodeRunner.FinishCurrentTask(task);
        }
        public void CaseSkipped(SkipResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;

            task.CloseTask(TaskResult.Skipped, result.Case.Name);

            if (isParameterized)
            {
                nodeRunner.FinishCurrentTask(task);
            }
        }
        public void CasePassed(PassResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;

            if (!string.IsNullOrWhiteSpace(result.Output))
            {
                server.TaskOutput(task, result.Output, TaskOutputType.STDOUT);
            }
            task.CloseTask(TaskResult.Success, result.Case.Name);

            if (isParameterized)
            {
                nodeRunner.FinishCurrentTask(task);
            }
        }
        public void CaseSkipped(SkipResult result)
        {
            if (isParameterized)
            {
                var newTask = new TestCaseTask(result.Case.Name, nodeRunner.CurrentTask.AssemblyLocation);
                server.CreateDynamicElement(newTask);
                nodeRunner.AddTask(newTask);
            }

            var task = nodeRunner.CurrentTask;
            task.CloseTask(TaskResult.Skipped, result.Case.Name);

            if (isParameterized)
                nodeRunner.FinishCurrentTask(task);
        }
 private void RunCaseTask(TestCaseTask task)
 {
 }
 private bool IsParentMethodTask(TestMethodTask methodTask, TestCaseTask caseTask)
 {
     return methodTask.AssemblyLocation == caseTask.AssemblyLocation && methodTask.TypeName == caseTask.TypeName
            && methodTask.MethodName == caseTask.MethodName;
 }
        private IUnitTestElement GetDynamicCaseElement(
            Dictionary<RemoteTask, IUnitTestElement> tasks,
            TestCaseTask caseTask)
        {
            var methodElement =
                tasks.Where(kvp => kvp.Key is TestMethodTask && IsParentMethodTask(kvp.Key as TestMethodTask, caseTask))
                     .Select(kvp => kvp.Value).FirstOrDefault() as TestMethodElement;
            if (methodElement == null)
                return null;

            using (ReadLockCookie.Create())
            {
                var project = methodElement.GetProject();
                if (project == null)
                    return null;

                var element = UnitTestElementFactory.GetTestCase(
                    project,
                    methodElement,
                    caseTask.MethodName + caseTask.Parameters);

                // Make sure we return an element, even if the system already knows about it. If it's
                // part of the test run, it will already have been added in GetTaskSequence, and this
                // method (GetDynamicElement) doesn't get called. But if you try and run just a single
                // theory, Fixie will run ALL theories for that method, and will need the elements
                // for those theories not included in the task sequence. This is necessary because if
                // one of those theories throws an exception, UnitTestLaunch.TaskException doesn't
                // have an element to report against, and displays a message box
                if (element != null)
                {
                    // If the element is invalid, it's been removed from its parent, so add it back,
                    // and reset the state
                    if (element.State == UnitTestElementState.Invalid)
                    {
                        element.State = UnitTestElementState.Dynamic;
                        element.Parent = methodElement;
                    }
                    return element;
                }

                return UnitTestElementFactory.CreateTestCase(
                    this,
                    project,
                    methodElement,
                    caseTask.MethodName + caseTask.Parameters);
            }
        }
예제 #11
0
 private bool IsParentMethodTask(TestMethodTask methodTask, TestCaseTask caseTask)
 {
     return(methodTask.AssemblyLocation == caseTask.AssemblyLocation && methodTask.TypeName == caseTask.TypeName &&
            methodTask.MethodName == caseTask.MethodName);
 }