/// <summary> /// Execute the current test /// </summary> /// <returns>Test-Result instance containing all result information</returns> public virtual TestResult Execute() { TestResult testResult = null; try { // Prepare all indicators foreach (var indicator in indicators) { indicator.Prepare(); } // Before test starts foreach (var indicator in indicators) { indicator.Start(); } // Execute test testResult = Process(); // Test finished, stop indicator foreach (var indicator in indicators) { indicator.Stop(); } // free indicator resources foreach (var indicator in indicators) { indicator.Free(); } } catch(Exception ex) { // Create TestResult and add exception information testResult = new TestResult(this); testResult.ExitCode = TestCaseExitCode.Error; testResult.Message = ex.ToString() + (ex.InnerException == null ? "" : "\r\n" + ex.InnerException.ToString()); } return testResult; }
/// <summary> /// Process/execute the test /// </summary> /// <returns>Result with test results</returns> protected override TestResult Process() { TestResult result = new TestResult(this); Process process = new Process(); process.StartInfo.FileName = executable; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; if (!string.IsNullOrWhiteSpace(arguments)) { process.StartInfo.Arguments = arguments; } if (!string.IsNullOrWhiteSpace(workingDirectory)) { process.StartInfo.WorkingDirectory = workingDirectory; } process.Start(); process.WaitForExit(); // set result if (process.ExitCode == 0) { result.ExitCode = TestCaseExitCode.Success; } else { result.ExitCode = TestCaseExitCode.Warning; } result.Message = process.StandardOutput.ReadToEnd(); return result; }
/// <summary> /// Create a new TestCaseReport for reporting the complete result of a testcase /// </summary> /// <param name="result">Instance of a result class</param> /// <param name="indicatorResults">List of indicator results</param> public TestCaseReport(TestResult result, IList<IIndicatorResult> indicatorResults) { this.indicatorResults = indicatorResults; this.result = result; }