1
// ***********************************************************************
2
// Copyright (c) 2007 Charlie Poole
4
// Permission is hereby granted, free of charge, to any person obtaining
5
// a copy of this software and associated documentation files (the
6
// "Software"), to deal in the Software without restriction, including
7
// without limitation the rights to use, copy, modify, merge, publish,
8
// distribute, sublicense, and/or sell copies of the Software, and to
9
// permit persons to whom the Software is furnished to do so, subject to
10
// the following conditions:
12
// The above copyright notice and this permission notice shall be
13
// included in all copies or substantial portions of the Software.
15
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
// ***********************************************************************
27
using System.Threading;
28
using System.Collections.Specialized;
31
/// ThreadedTestRunner overrides the Run and BeginRun methods
32
/// so that they are always run on a separate thread. The actual
34
public class ThreadedTestRunner : ProxyTestRunner
36
static Logger log = InternalTrace.GetLogger(typeof(ThreadedTestRunner));
38
#region Instance Variables
39
private TestRunnerThread testRunnerThread;
43
public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
47
public override TestResult Run( ITestListener listener )
53
public override TestResult Run( ITestListener listener, TestFilter filter )
55
BeginRun( listener, filter );
59
public override void BeginRun( ITestListener listener )
62
testRunnerThread = new TestRunnerThread( this.TestRunner );
63
testRunnerThread.StartRun( listener );
66
public override void BeginRun( ITestListener listener, TestFilter filter )
69
testRunnerThread = new TestRunnerThread(this.TestRunner);
70
testRunnerThread.StartRun( listener, filter );
73
public override TestResult EndRun()
77
return this.TestRunner.TestResult;
81
public override void Wait()
83
if ( testRunnerThread != null )
84
testRunnerThread.Wait();
87
public override void CancelRun()
89
if ( testRunnerThread != null )
90
testRunnerThread.Cancel();