public override TestResult Run(EventListener listener, ITestFilter filter) { using (new TestContext()) { TestSuiteResult suiteResult = new TestSuiteResult(new TestInfo(this), TestName.Name); listener.SuiteStarted(this.TestName); long startTime = DateTime.Now.Ticks; switch (this.RunState) { case RunState.Runnable: case RunState.Explicit: suiteResult.RunState = RunState.Executed; DoOneTimeSetUp(suiteResult); if (suiteResult.IsFailure) { MarkTestsFailed(Tests, suiteResult, listener, filter); } else { try { RunAllTests(suiteResult, listener, filter); } finally { DoOneTimeTearDown(suiteResult); } } break; case RunState.Skipped: suiteResult.Skip(this.IgnoreReason); MarkTestsNotRun(Tests, RunState.Skipped, IgnoreReason, suiteResult, listener, filter); break; default: case RunState.Ignored: case RunState.NotRunnable: suiteResult.Ignore(this.IgnoreReason); MarkTestsNotRun(Tests, RunState.Ignored, IgnoreReason, suiteResult, listener, filter); break; } long stopTime = DateTime.Now.Ticks; double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond; suiteResult.Time = time; listener.SuiteFinished(suiteResult); return(suiteResult); } }