public override void TestsFinished(object sender, TestEventArgs <UnitTestMethod> args)
        {
            UnitTestMethod            test    = args.Test.CopyAs <UnitTestMethod>();
            TestSuiteDefinition       suite   = GetTestSuiteDefinition(args);
            TestSuiteExecutionSummary summary = GetTestSuiteExecutionSummary(suite);

            summary.FinishedTime = DateTime.UtcNow;
            TestReportService.SaveTestSuiteExecutionSummary(summary);
        }
 /// <summary>
 /// Set a TestSuiteExecutionSummary for the specified test creating it if necessary
 /// and populating the internal cache
 /// </summary>
 /// <param name="suite"></param>
 /// <returns></returns>
 protected TestSuiteExecutionSummary SetTestSuiteExecutionSummary(TestSuiteDefinition suite)
 {
     lock (_testSuiteExecutionSummaryLock)
     {
         if (!_testSuiteExecutionLookupByTitle.TryGetValue(suite.Title, out TestSuiteExecutionSummary summary))
         {
             TestSuiteExecutionSummary executionSummary = new TestSuiteExecutionSummary {
                 TestSuiteDefinitionId = suite.Id, StartedTime = DateTime.UtcNow
             };
             SaveTestSuiteExecutionSummaryResponse response = TestReportService.SaveTestSuiteExecutionSummary(executionSummary);
             if (response.Success)
             {
                 summary = response.TestSuiteExecutionSummary;
                 _testSuiteExecutionLookupByTitle.TryAdd(suite.Title, summary);
             }
             else
             {
                 Logger.Warning("Failed to create TestSuiteExecutionSummary: {0}", response.Message);
             }
         }
         return(summary);
     }
 }