/// <summary>
 /// Handle wiring up the events and running everything in a try catch block.
 /// </summary>
 /// <param name="runner">Which test runner to use when launching tests </param>
 /// <param name="startingHandler">method to wire up to start event</param>
 /// <param name="testCompleteHandler">method to recieve test complete event</param>
 /// <param name="allCompleteHandler">method to recieve all tests complete event</param>
 /// <param name="assemblyPath">File path to assembly containing tests </param>
 /// <param name="assemblyName">Full name of assembly containing tests </param>
 /// <param name="specificTestAction">Delegate that will call the correct testRunner method and do any other tasks associated with testing</param>
 public static void StandardRunTestBehavior(BaseTestRunner runner,
                                            TestsStartingHandler startingHandler,
                                            TestCompleteEventHandler testCompleteHandler,
                                            AllTestsCompleteEventHandler allCompleteHandler,
                                            string assemblyPath,
                                            string assemblyName,
                                            RunTestSelectorAction specificTestAction)
 {
     try
     {
         runner.TestsStarting    += startingHandler;
         runner.TestComplete     += testCompleteHandler;
         runner.AllTestsComplete += allCompleteHandler;
         specificTestAction(runner, assemblyPath, assemblyName);
     }
     finally
     {
         runner.TestsStarting    -= startingHandler;
         runner.TestComplete     -= testCompleteHandler;
         runner.AllTestsComplete -= allCompleteHandler;
     }
 }
 /// <summary>
 /// Handle wiring up the events and running everything in a try catch block.
 /// </summary>
 /// <param name="runner">Which test runner to use when launching tests </param>
 /// <param name="startingHandler">method to wire up to start event</param>
 /// <param name="testCompleteHandler">method to recieve test complete event</param>
 /// <param name="allCompleteHandler">method to recieve all tests complete event</param>
 /// <param name="assemblyPath">File path to assembly containing tests </param>
 /// <param name="assemblyName">Full name of assembly containing tests </param>
 /// <param name="specificTestAction">Delegate that will call the correct testRunner method and do any other tasks associated with testing</param>
 public static void StandardRunTestBehavior(BaseTestRunner runner, 
     TestsStartingHandler startingHandler, 
     TestCompleteEventHandler testCompleteHandler, 
     AllTestsCompleteEventHandler allCompleteHandler,
     string assemblyPath,
     string assemblyName,
     RunTestSelectorAction specificTestAction)
 {
     try
     {
         runner.TestsStarting += startingHandler;
         runner.TestComplete += testCompleteHandler;
         runner.AllTestsComplete += allCompleteHandler;
         specificTestAction(runner, assemblyPath, assemblyName);
     }
     finally
     {
         runner.TestsStarting -= startingHandler;
         runner.TestComplete -= testCompleteHandler;
         runner.AllTestsComplete -= allCompleteHandler;
     }
 }