PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/src/NUnit/core/ThreadedTestRunner.cs

#
C# | 77 lines | 56 code | 12 blank | 9 comment | 4 complexity | 57b4f0aed53c66cbfb4263fb706e5c95 MD5 | raw file
Possible License(s): GPL-2.0
  1. // ****************************************************************
  2. // Copyright 2007, Charlie Poole
  3. // This is free software licensed under the NUnit license. You may
  4. // obtain a copy of the license at http://nunit.org.
  5. // ****************************************************************
  6. namespace NUnit.Core
  7. {
  8. using System;
  9. using System.Threading;
  10. using System.Collections.Specialized;
  11. /// <summary>
  12. /// ThreadedTestRunner overrides the Run and BeginRun methods
  13. /// so that they are always run on a separate thread. The actual
  14. /// </summary>
  15. public class ThreadedTestRunner : ProxyTestRunner
  16. {
  17. static Logger log = InternalTrace.GetLogger(typeof(ThreadedTestRunner));
  18. #region Instance Variables
  19. private TestRunnerThread testRunnerThread;
  20. #endregion
  21. #region Constructors
  22. public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
  23. #endregion
  24. #region Overrides
  25. public override TestResult Run( EventListener listener )
  26. {
  27. BeginRun( listener );
  28. return EndRun();
  29. }
  30. public override TestResult Run( EventListener listener, ITestFilter filter )
  31. {
  32. BeginRun( listener, filter );
  33. return EndRun();
  34. }
  35. public override void BeginRun( EventListener listener )
  36. {
  37. log.Info("BeginRun");
  38. testRunnerThread = new TestRunnerThread( this.TestRunner );
  39. testRunnerThread.StartRun( listener );
  40. }
  41. public override void BeginRun( EventListener listener, ITestFilter filter )
  42. {
  43. log.Info("BeginRun");
  44. testRunnerThread = new TestRunnerThread(this.TestRunner);
  45. testRunnerThread.StartRun( listener, filter );
  46. }
  47. public override TestResult EndRun()
  48. {
  49. log.Info("EndRun");
  50. this.Wait();
  51. return this.TestRunner.TestResult;
  52. }
  53. public override void Wait()
  54. {
  55. if ( testRunnerThread != null )
  56. testRunnerThread.Wait();
  57. }
  58. public override void CancelRun()
  59. {
  60. if ( testRunnerThread != null )
  61. testRunnerThread.Cancel();
  62. }
  63. #endregion
  64. }
  65. }