private ObjectModel.TestResult CreateTest(TestData test, TestStepRun stepRun, TestCase testCase) { ObjectModel.TestResult testResult = new ObjectModel.TestResult(testCase); testResult.DisplayName = test.Name; testResult.ErrorLineNumber = test.CodeLocation.Line; //testResult.ErrorStackTrace testResult.StartTime = stepRun.StartTime; if (stepRun.TestLog.Streams.Count > 0) { testResult.ErrorMessage = stepRun.TestLog.Streams[0].ToString(); } testResult.EndTime = stepRun.EndTime; testResult.Duration = stepRun.Result.Duration; var testStatus = stepRun.Result.Outcome.Status; switch (testStatus) { case TestStatus.Passed: testResult.Outcome = ObjectModel.TestOutcome.Passed; break; case TestStatus.Failed: testResult.Outcome = ObjectModel.TestOutcome.Failed; break; case TestStatus.Skipped: testResult.Outcome = ObjectModel.TestOutcome.Skipped; break; case TestStatus.Inconclusive: testResult.Outcome = ObjectModel.TestOutcome.NotFound; break; } return testResult; }
private void HandleSkippedTest(ObjectModel.TestResult rsTestResult) { Debug.Assert(rsTestResult.Outcome == ObjectModel.TestOutcome.Skipped, "Test Result should be skipped but it is " + rsTestResult.Outcome); ObjectModel.TestCase testCase = rsTestResult.TestCase; string testCaseName = !string.IsNullOrEmpty(testCase.DisplayName) ? testCase.DisplayName : testCase.FullyQualifiedName; string message = String.Format(CultureInfo.CurrentCulture, TrxLoggerResources.MessageForSkippedTests, testCaseName); this.AddRunLevelInformationalMessage(message); }
private List <ObjectModel.TestResult> GetTestResultObject(TestOutcome outcome) { var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); var testresult = new ObjectModel.TestResult(testcase); testresult.Outcome = outcome; var testresultList = new List <ObjectModel.TestResult> { testresult }; return(testresultList); }
private void RunTests(ITestExecutionRecorder testExecutionRecorder) { TestLauncherResult testLauncherResult = _launcher.Run(); foreach (var allTestStepRun in testLauncherResult.Report.TestPackageRun.AllTestStepRuns) { TestCase tc = new TestCase(allTestStepRun.Step.FullName, new Uri(ExecutorUri)); ObjectModel.TestResult testResult = new ObjectModel.TestResult(tc); testResult.DisplayName = allTestStepRun.Step.FullName; testResult.ErrorLineNumber = allTestStepRun.Step.CodeLocation.Line; //testResult.ErrorStackTrace testResult.StartTime = allTestStepRun.StartTime; //testResult.ErrorMessage -- why this and messages? testResult.EndTime = allTestStepRun.EndTime; //testResult.Attachments = allTestStepRun.TestLog.Attachments; -- can I append my own? testResult.Duration = allTestStepRun.Result.Duration; //testResult.Messages = var testStatus = allTestStepRun.Result.Outcome.Status; switch (testStatus) { case TestStatus.Passed: testResult.Outcome = ObjectModel.TestOutcome.Passed; break; case TestStatus.Failed: testResult.Outcome = ObjectModel.TestOutcome.Failed; break; case TestStatus.Skipped: testResult.Outcome = ObjectModel.TestOutcome.Skipped; break; case TestStatus.Inconclusive: //is this right to use not found? testResult.Outcome = ObjectModel.TestOutcome.Skipped; break; } testExecutionRecorder.RecordResult(testResult); } }
private List <ObjectModel.TestResult> GetTestResultsObject() { var testcase = new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { DisplayName = "TestName" }; var testresult = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.Passed }; var testresult1 = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.Failed }; var testresult2 = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.None }; var testresult3 = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.NotFound }; var testresult4 = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.Skipped }; var testresultList = new List <ObjectModel.TestResult> { testresult, testresult1, testresult2, testresult3, testresult4 }; return(testresultList); }
public void TestResultHandlerShouldShowStdOutMessagesBannerIfStdOutIsNotEmpty() { var count = 0; this.mockOutput.Setup(o => o.WriteLine(It.IsAny <string>(), It.IsAny <OutputLevel>())).Callback <string, OutputLevel>( (s, o) => { count++; }); var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); loggerEvents.EnableEvents(); var parameters = new Dictionary <string, string> { { "verbosity", "normal" } }; this.consoleLogger.Initialize(loggerEvents, parameters); string message = "Dummy message"; var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); var testresult = new ObjectModel.TestResult(testcase) { Outcome = TestOutcome.Failed }; testresult.Messages.Add(testResultMessage); loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); loggerEvents.WaitForEventCompletion(); // Added this for synchronization SpinWait.SpinUntil(() => count == 2, 300); this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Once()); this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); }
/// <summary> /// Creates test result /// </summary> /// <param name="executionId"></param> /// <param name="parentExecutionId"></param> /// <param name="testType"></param> /// <param name="testElement"></param> /// <param name="parentTestElement"></param> /// <param name="parentTestResult"></param> /// <param name="rocksteadyTestResult"></param> /// <returns>Trx test result</returns> private ITestResult CreateTestResult(Guid executionId, Guid parentExecutionId, TestType testType, ITestElement testElement, ITestElement parentTestElement, ITestResult parentTestResult, ObjectModel.TestResult rocksteadyTestResult) { // Create test result TrxLoggerObjectModel.TestOutcome testOutcome = this.converter.ToOutcome(rocksteadyTestResult.Outcome); var testResult = this.converter.ToTestResult(testElement.Id.Id, executionId, parentExecutionId, testElement.Name, this.testResultsDirPath, testType, testElement.CategoryId, testOutcome, this.testRun, rocksteadyTestResult); // Normal result scenario if (parentTestResult == null) { this.results.TryAdd(executionId, testResult); return(testResult); } // Ordered test inner result scenario if (parentTestElement != null && parentTestElement.TestType.Equals(TrxLoggerConstants.OrderedTestType)) { (parentTestResult as TestResultAggregation).InnerResults.Add(testResult); this.innerResults.TryAdd(executionId, testResult); return(testResult); } // Data driven inner result scenario if (parentTestElement != null && parentTestElement.TestType.Equals(TrxLoggerConstants.UnitTestType)) { (parentTestResult as TestResultAggregation).InnerResults.Add(testResult); testResult.DataRowInfo = (parentTestResult as TestResultAggregation).InnerResults.Count; testResult.ResultType = TrxLoggerConstants.InnerDataDrivenResultType; parentTestResult.ResultType = TrxLoggerConstants.ParentDataDrivenResultType; return(testResult); } return(testResult); }
/// <summary> /// Gets or creates test element. /// </summary> /// <param name="executionId"></param> /// <param name="parentExecutionId"></param> /// <param name="testType"></param> /// <param name="parentTestElement"></param> /// <param name="rockSteadyTestCase"></param> /// <returns>Trx test element</returns> private ITestElement GetOrCreateTestElement(Guid executionId, Guid parentExecutionId, TestType testType, ITestElement parentTestElement, ObjectModel.TestResult rockSteadyTestResult) { ITestElement testElement = parentTestElement; // For scenarios like data driven tests, test element is same as parent test element. if (parentTestElement != null && !parentTestElement.TestType.Equals(TrxLoggerConstants.OrderedTestType)) { return(testElement); } TestCase testCase = rockSteadyTestResult.TestCase; Guid testId = this.converter.GetTestId(testCase); // Scenario for inner test case when parent test element is not present. var testName = testCase.DisplayName; var adapter = testCase.ExecutorUri.ToString(); if (adapter.Contains(TrxLoggerConstants.MstestAdapterString) && parentTestElement == null && !string.IsNullOrEmpty(rockSteadyTestResult.DisplayName)) { // Note: For old mstest adapters hierarchical support was not present. Thus inner result of data driven was identified using test result display name. // Non null test result display name means its a inner result of data driven/ordered test. // Changing GUID to keep supporting old mstest adapters. testId = Guid.NewGuid(); testName = rockSteadyTestResult.DisplayName; } // Get test element testElement = GetTestElement(testId); // Create test element if (testElement == null) { testElement = this.converter.ToTestElement(testId, executionId, parentExecutionId, testName, testType, testCase); testElements.TryAdd(testId, testElement); } return(testElement); }
/// <summary> /// Gets or creates test element. /// </summary> /// <param name="executionId"></param> /// <param name="parentExecutionId"></param> /// <param name="testType"></param> /// <param name="parentTestElement"></param> /// <param name="rockSteadyTestCase"></param> /// <returns>Trx test element</returns> private ITestElement GetOrCreateTestElement(Guid executionId, Guid parentExecutionId, TestType testType, ITestElement parentTestElement, ObjectModel.TestResult rockSteadyTestResult) { ITestElement testElement = parentTestElement; // For scenarios like data driven tests, test element is same as parent test element. if (parentTestElement != null && !parentTestElement.TestType.Equals(TrxLoggerConstants.OrderedTestType)) { return(testElement); } Guid testId = Converter.GetTestId(rockSteadyTestResult.TestCase); // Scenario for inner test case when parent test element is not present. var testName = rockSteadyTestResult.TestCase.DisplayName; if (parentTestElement == null && !string.IsNullOrEmpty(rockSteadyTestResult.DisplayName)) { testId = Guid.NewGuid(); testName = rockSteadyTestResult.DisplayName; } // Get test element testElement = GetTestElement(testId); // Create test element if (testElement == null) { testElement = Converter.ToTestElement(testId, executionId, parentExecutionId, testName, testType, rockSteadyTestResult.TestCase); testElements.TryAdd(testId, testElement); } return(testElement); }