internal static void AddTestResult(string closingTestResultName, // previousTestResultName
string closingTestResultId, // previousTestResultId
bool? passed,
bool isKnownIssue,
bool generateNextResult,
// 20160116
// InvocationInfo myInvocation,
// ErrorRecord error,
Exception error,
string testResultDescription,
TestResultOrigins origin,
bool skipAutomatic)
{
//TestData.InitCurrentTestScenario();
bool generated = TestResultOrigins.Automatic == origin;
ITestResult currentTestResult;
if (null != CurrentTestResult) {
currentTestResult = CurrentTestResult;
} else {
// 20141204
// currentTestResult =
// new TestResult(
// TestData.CurrentTestScenario.Id,
// TestData.CurrentTestSuite.Id);
currentTestResult =
new TestResult(
CurrentTestScenario.Id,
CurrentTestSuite.Id) {
SuiteUniqueId = CurrentTestSuite.UniqueId,
ScenarioUniqueId = CurrentTestScenario.UniqueId
};
}
if (string.IsNullOrEmpty(currentTestResult.Name)) {
// if (closingTestResultName != null &&
// closingTestResultName != string.Empty &&
// closingTestResultName.Length > 0 &&
// TestData.CurrentTestResult != null &&
// closingTestResultName != TestData.CurrentTestResult.Name) {
if (!string.IsNullOrEmpty(closingTestResultName) &&
((CurrentTestResult != null &&
closingTestResultName != CurrentTestResult.Name) ||
null == CurrentTestResult)) {
currentTestResult.Name = closingTestResultName;
} else {
currentTestResult.Name = Tmx_Core_Resources.TestData_AddTestResult_generated_test_result_name;
}
} else {
// the current test result is a result that was preset
// nothing to do
}
// setting test result's origin
//if (generated)
// currentTestResult.SetOrigin(TestResultOrigins.Automatic);
//else
// currentTestResult.SetOrigin(origin);
currentTestResult.SetOrigin(generated ? TestResultOrigins.Automatic : origin);
if (string.IsNullOrEmpty(currentTestResult.Id)) {
if (!string.IsNullOrEmpty(closingTestResultId) &&
((null != CurrentTestResult &&
closingTestResultId != CurrentTestResult.Id) ||
null == CurrentTestResult))
currentTestResult.Id = closingTestResultId;
else
currentTestResult.Id = GetTestResultId();
} else {
// there already was the Id
// nothing to do
}
if (passed != null) {
if ((bool)passed) {
currentTestResult.enStatus = TestStatuses.Passed;
} else {
currentTestResult.enStatus = TestStatuses.Failed;
}
if (isKnownIssue) {
currentTestResult.enStatus = TestStatuses.KnownIssue;
}
} else {
//currentTestResult.enStatus = TestResultStatuses.NotTested;
// if there were no errors during the test case execution
// it is marked as passed
bool noErrors = true;
if (null == currentTestResult.Error &&
TestStatuses.Failed != currentTestResult.enStatus &&
TestStatuses.KnownIssue != currentTestResult.enStatus) {
//foreach (ITestResultDetail detail in currentTestResult.Details) {
// if (null == ((TestResultDetail)detail).ErrorDetail) {
// noErrors = false;
// break;
// }
//}
if (currentTestResult.Details.Any(detail => null == ((TestResultDetail) detail).ErrorDetail))
noErrors = false;
}
if (noErrors && null != passed) {
currentTestResult.enStatus = TestStatuses.Passed;
}
}
if (!string.IsNullOrEmpty(testResultDescription)) {
currentTestResult.Description = testResultDescription;
}
if (generated)
currentTestResult.SetGenerated();
if (TmxHelper.TestCaseStarted == DateTime.MinValue)
TmxHelper.TestCaseStarted = DateTime.Now;
currentTestResult.SetNow();
currentTestResult.SetTimeSpent(
(currentTestResult.Timestamp - TmxHelper.TestCaseStarted).TotalSeconds);
CurrentTestResult = currentTestResult;
try {
CurrentTestResult.PlatformUniqueId = CurrentTestScenario.PlatformUniqueId;
CurrentTestResult.PlatformId = CurrentTestScenario.PlatformId;
// 20141204
CurrentTestResult.SuiteUniqueId = CurrentTestSuite.UniqueId;
CurrentTestResult.ScenarioUniqueId = CurrentTestScenario.UniqueId;
}
catch {}
if (null != CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] &&
TestResultOrigins.Logical == CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Origin &&
CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] != CurrentTestResult &&
!string.IsNullOrEmpty(CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Name)) {
TmxHelper.TestCaseStarted = DateTime.Now;
// 20141204
// TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
CurrentTestScenario.TestResults.Add(new TestResult(CurrentTestScenario.Id, CurrentTestSuite.Id) {
SuiteUniqueId = CurrentTestSuite.UniqueId,
ScenarioUniqueId = CurrentTestScenario.UniqueId
});
}
/*
if (null != TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] &&
TestResultOrigins.Logical == TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Origin &&
TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] != TestData.CurrentTestResult &&
null != TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Name &&
0 < TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Name.Length) {
TmxHelper.TestCaseStarted =
System.DateTime.Now;
TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
}
*/
CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] =
CurrentTestResult;
#region Test Result's PowerShell data
// 20160116
/*
if (myInvocation != null) {
TestData.CurrentTestResult.SetScriptName(TmxHelper.GetScriptName(myInvocation));
TestData.CurrentTestResult.SetLineNumber(TmxHelper.GetScriptLineNumber(myInvocation));
TestData.CurrentTestResult.SetPosition(TmxHelper.GetPipelinePosition(myInvocation));
// 20130329
try {
if (((bool)passed && Preferences.LogScriptName_Passed) || (!(bool)passed && Preferences.LogScriptName_Failed)) {
TestData.CurrentTestResult.Code +=
"script name: " +
TestData.CurrentTestResult.ScriptName;
}
}
catch {}
try {
if (((bool)passed && Preferences.LogLineNumber_Passed) || (!(bool)passed && Preferences.LogLineNumber_Failed)) {
TestData.CurrentTestResult.Code +=
"\r\nline number: " +
TestData.CurrentTestResult.LineNumber.ToString();
}
}
catch {}
try {
if (((bool)passed && Preferences.LogCode_Passed) || (!(bool)passed && Preferences.LogCode_Failed)) {
TestData.CurrentTestResult.Code +=
"\r\ncode:\r\n" +
myInvocation.Line;
}
}
catch {}
}
if (error != null) {
// 20150116
// TestData.CurrentTestResult.SetError(error);
TestData.CurrentTestResult.SetError(error.Exception);
}
*/
#endregion Test Result's PowerShell data
var sourceTestResult = CurrentTestResult;
SetScenarioStatus(skipAutomatic);
SetSuiteStatus(skipAutomatic);
if (generateNextResult) {
// write current time
TmxHelper.TestCaseStarted = DateTime.Now;
CurrentTestScenario.TestResults.Add(
new TestResult(
CurrentTestScenario.Id,
CurrentTestScenario.SuiteId) { SuiteUniqueId = CurrentTestScenario.SuiteUniqueId, ScenarioUniqueId = CurrentTestScenario.UniqueId });
CurrentTestResult =
CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1];
} else {
// write zero time
TmxHelper.TestCaseStarted = DateTime.MinValue;
CurrentTestResult = null;
}
if (Preferences.Storage) {
using (var session = StorageHelper.SessionFactory.OpenSession())
{
session.Save(CurrentTestResult);
}
}
OnTmxNewTestResultClosed(sourceTestResult, null);
}