/// <summary>
        /// TestCase results
        /// </summary>
        /// <param name="testStatus"></param>
        public void TestCaseResults(TestContext testContext)
        {
            TestStatus    testStatus    = testContext.Result.Outcome.Status;
            ResultAdapter resultAdapter = testContext.Result;

            object[]      endTestCaseParameterArray;
            List <string> testResults = new List <string>();
            TestResult    testResult  = TestResult.Inconclusive;

            Type                 myClass = Assembly.GetCallingAssembly().GetType(className);
            MethodInfo           EndOfTestCaseExecution = myClass.GetMethod("EndOfTestCaseExecution");
            TestBaseClassService myObj = (TestBaseClassService)Activator.CreateInstance(myClass);

            try
            {
                if (testStatus == TestStatus.Passed)
                {
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testcase details after pass
                    ContextLogger.LogAfterTestCasePass(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, true };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Passed;
                }

                else if (testStatus == TestStatus.Failed)
                {
                    //Logging if test case fails
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseFails(moduleName, className, testCaseName, testDataService.TestData, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Failed;
                    testResults.Add(resultAdapter.Message);
                    testResults.Add(resultAdapter.StackTrace);
                }
                else if (testStatus == TestStatus.Skipped)
                {
                    //Logging if test case fails
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseSkipped(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Skipped;
                    testResults.Add(resultAdapter.Message);
                }
                else if (testStatus == TestStatus.Inconclusive)
                {
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseInConclusive(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Inconclusive;
                }
            }
            catch (IgnoreException ex)
            {
                //Logging testCase details after fails
                ContextLogger.LogAfterTestCaseSkipped(moduleName, className, testCaseName, timeElapsed, "Skipped" + ex.Message);
                endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                testResult = TestResult.Skipped;
            }
            catch (Exception ex)
            {
                ContextLogger.LogIfException(moduleName, className, testCaseName, ex.Message);
                endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                testResult = TestResult.Failed;
                if (testResults.Count == 0)
                {
                    testResults.Add("Test is executed with:" + testResult.ToString() + "status");
                }

                testResultService.InsertTestResults(testCaseName, testResult, testResults.ToArray());
            }
            finally
            {
                if (testResults.Count == 0)
                {
                    testResults.Add("Test is executed with:" + testResult.ToString() + "status");
                }

                testResultService.InsertTestResults(testCaseName, testResult, testResults.ToArray());
            }
        }