a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
180 lines
4.5 KiB
C#
180 lines
4.5 KiB
C#
// ****************************************************************
|
|
// Copyright 2007, Charlie Poole
|
|
// This is free software licensed under the NUnit license. You may
|
|
// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
|
|
// ****************************************************************
|
|
|
|
namespace NUnit.Util
|
|
{
|
|
using System;
|
|
using System.Collections;
|
|
using System.IO;
|
|
using NUnit.Core;
|
|
|
|
/// <summary>
|
|
/// ProxyTestRunner is the abstract base for all client-side
|
|
/// TestRunner implementations that delegate to a remote
|
|
/// TestRunner. All calls are simply passed on to the
|
|
/// TestRunner that is provided to the constructor.
|
|
///
|
|
/// This class is similar to DelegatingTestRunner in the
|
|
/// NUnit core, but is separate because of how it is used.
|
|
///
|
|
/// Although the class is abstract, it has no abstract
|
|
/// methods specified because each implementation will
|
|
/// need to override different methods. All methods are
|
|
/// specified using interface syntax and the derived class
|
|
/// must explicitly implement TestRunner in order to
|
|
/// redefine the selected methods.
|
|
/// </summary>
|
|
public abstract class ProxyTestRunner : TestRunner
|
|
{
|
|
#region Instance Variables
|
|
|
|
/// <summary>
|
|
/// Our runner ID
|
|
/// </summary>
|
|
protected int runnerID;
|
|
|
|
/// <summary>
|
|
/// The downstream TestRunner
|
|
/// </summary>
|
|
private TestRunner testRunner;
|
|
|
|
/// <summary>
|
|
/// The event listener for the currently running test
|
|
/// </summary>
|
|
protected EventListener listener;
|
|
|
|
#endregion
|
|
|
|
#region Construction
|
|
public ProxyTestRunner(TestRunner testRunner)
|
|
{
|
|
this.testRunner = testRunner;
|
|
this.runnerID = testRunner.ID;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Protected constructor for runners that create their own
|
|
/// specialized downstream runner.
|
|
/// </summary>
|
|
protected ProxyTestRunner( int runnerID )
|
|
{
|
|
this.runnerID = runnerID;
|
|
}
|
|
#endregion
|
|
|
|
#region Properties
|
|
public virtual int ID
|
|
{
|
|
get { return runnerID; }
|
|
}
|
|
|
|
public virtual bool Running
|
|
{
|
|
get { return testRunner != null && testRunner.Running; }
|
|
}
|
|
|
|
public virtual IList AssemblyInfo
|
|
{
|
|
get { return testRunner == null ? null : testRunner.AssemblyInfo; }
|
|
}
|
|
|
|
public virtual ITest Test
|
|
{
|
|
get { return testRunner == null ? null : testRunner.Test; }
|
|
}
|
|
|
|
public virtual TestResult TestResult
|
|
{
|
|
get { return testRunner == null ? null : testRunner.TestResult; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Protected property copies any settings to the downstream test runner
|
|
/// when it is set. Derived runners overriding this should call the base
|
|
/// or copy the settings themselves.
|
|
/// </summary>
|
|
protected virtual TestRunner TestRunner
|
|
{
|
|
get { return testRunner; }
|
|
set { testRunner = value; }
|
|
}
|
|
#endregion
|
|
|
|
#region Load and Unload Methods
|
|
public virtual bool Load( TestPackage package )
|
|
{
|
|
return this.testRunner.Load( package );
|
|
}
|
|
|
|
public virtual void Unload()
|
|
{
|
|
if ( this.testRunner != null )
|
|
this.testRunner.Unload();
|
|
}
|
|
#endregion
|
|
|
|
#region CountTestCases
|
|
public virtual int CountTestCases( ITestFilter filter )
|
|
{
|
|
return this.testRunner.CountTestCases( filter );
|
|
}
|
|
#endregion
|
|
|
|
#region Methods for Running Tests
|
|
public virtual TestResult Run(EventListener listener)
|
|
{
|
|
// Save active listener for derived classes
|
|
this.listener = listener;
|
|
return this.testRunner.Run(listener);
|
|
}
|
|
|
|
public virtual TestResult Run(EventListener listener, ITestFilter filter)
|
|
{
|
|
// Save active listener for derived classes
|
|
this.listener = listener;
|
|
return this.testRunner.Run(listener, filter);
|
|
}
|
|
|
|
public virtual void BeginRun( EventListener listener )
|
|
{
|
|
// Save active listener for derived classes
|
|
this.listener = listener;
|
|
this.testRunner.BeginRun( listener );
|
|
}
|
|
|
|
public virtual void BeginRun( EventListener listener, ITestFilter filter )
|
|
{
|
|
// Save active listener for derived classes
|
|
this.listener = listener;
|
|
this.testRunner.BeginRun( listener, filter );
|
|
}
|
|
|
|
public virtual TestResult EndRun()
|
|
{
|
|
return this.testRunner.EndRun();
|
|
}
|
|
|
|
public virtual void CancelRun()
|
|
{
|
|
this.testRunner.CancelRun();
|
|
}
|
|
|
|
public virtual void Wait()
|
|
{
|
|
this.testRunner.Wait();
|
|
}
|
|
#endregion
|
|
|
|
#region InitializeLifetimeService Override
|
|
// public override object InitializeLifetimeService()
|
|
// {
|
|
// return null;
|
|
// }
|
|
#endregion
|
|
|
|
}
|
|
}
|