1 // ****************************************************************
\r
2 // Copyright 2007, Charlie Poole
\r
3 // This is free software licensed under the NUnit license. You may
\r
4 // obtain a copy of the license at http://nunit.org/?p=license&r=2.4
\r
5 // ****************************************************************
\r
9 using System.Threading;
\r
10 using System.Collections.Specialized;
\r
13 /// ThreadedTestRunner overrides the Run and BeginRun methods
\r
14 /// so that they are always run on a separate thread. The actual
\r
16 public class ThreadedTestRunner : ProxyTestRunner
\r
18 #region Instance Variables
\r
19 private TestRunnerThread testRunnerThread;
\r
22 #region Constructors
\r
23 public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
\r
27 public override TestResult Run( EventListener listener )
\r
29 BeginRun( listener );
\r
33 public override TestResult Run( EventListener listener, ITestFilter filter )
\r
35 BeginRun( listener, filter );
\r
39 public override void BeginRun( EventListener listener )
\r
41 testRunnerThread = new TestRunnerThread( this.TestRunner );
\r
43 testRunnerThread.StartRun( listener );
\r
46 public override void BeginRun( EventListener listener, ITestFilter filter )
\r
48 testRunnerThread = new TestRunnerThread( this.TestRunner );
\r
50 testRunnerThread.StartRun( listener, filter );
\r
53 public override TestResult EndRun()
\r
56 return this.TestRunner.TestResult;
\r
60 public override void Wait()
\r
62 if ( testRunnerThread != null )
\r
63 testRunnerThread.Wait();
\r
66 public override void CancelRun()
\r
68 if ( testRunnerThread != null )
\r
69 testRunnerThread.Cancel();
\r