private testcaseType RunTest(TestMethod t, MethodInfo[] setupMethods = null)
        {
            TestFilter filter = new NameFilter(t.TestName);

            var result = t.Run(new TestListener(), filter);

            //result types
            //Ignored, Failure, NotRunnable, Error, Success
            var testCase = new testcaseType
            {
                name = t.TestName.Name,
                executed = result.Executed.ToString(),
                success = result.IsSuccess.ToString(),
                asserts = result.AssertCount.ToString(CultureInfo.InvariantCulture),
                time = result.Time.ToString(CultureInfo.InvariantCulture)
            };

            switch (result.ResultState)
            {
                case ResultState.Cancelled:
                    testCase.result = "Cancelled";
                    break;
                case ResultState.Error:
                    var f = new failureType { message = result.Message, stacktrace = result.StackTrace };
                    testCase.Item = f;
                    testCase.result = "Error";
                    break;
                case ResultState.Failure:
                    var fail = new failureType { message = result.Message, stacktrace = result.StackTrace };
                    testCase.Item = fail;
                    testCase.result = "Failure";
                    break;
                case ResultState.Ignored:
                    testCase.result = "Ignored";
                    break;
                case ResultState.Inconclusive:
                    testCase.result = "Inconclusive";
                    break;
                case ResultState.NotRunnable:
                    testCase.result = "NotRunnable";
                    break;
                case ResultState.Skipped:
                    testCase.result = "Skipped";
                    break;
                case ResultState.Success:
                    testCase.result = "Success";
                    break;
            }

            return testCase;
        }