RunSummary RunTest_DataDiscoveryException() { // Use -1 for the index here so we don't collide with any legitimate test case IDs that might've been used var test = new XunitTest(TestCase, DisplayName, testIndex: -1); var testAssemblyUniqueID = TestCase.TestMethod.TestClass.TestCollection.TestAssembly.UniqueID; var testCollectionUniqueID = TestCase.TestMethod.TestClass.TestCollection.UniqueID; var testClassUniqueID = TestCase.TestMethod.TestClass.UniqueID; var testMethodUniqueID = TestCase.TestMethod.UniqueID; var testCaseUniqueID = TestCase.UniqueID; var testStarting = new _TestStarting { AssemblyUniqueID = testAssemblyUniqueID, TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestDisplayName = test.DisplayName, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testStarting)) { CancellationTokenSource.Cancel(); } else { var errorMetadata = ExceptionUtility.ExtractMetadata(dataDiscoveryException !.Unwrap()); var testFailed = new _TestFailed { AssemblyUniqueID = testAssemblyUniqueID, ExceptionParentIndices = errorMetadata.ExceptionParentIndices, ExceptionTypes = errorMetadata.ExceptionTypes, ExecutionTime = 0m, Messages = errorMetadata.Messages, Output = "", StackTraces = errorMetadata.StackTraces, TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testFailed)) { CancellationTokenSource.Cancel(); } } var testFinished = new _TestFinished { AssemblyUniqueID = testAssemblyUniqueID, ExecutionTime = 0m, Output = "", TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testFinished)) { CancellationTokenSource.Cancel(); } return(new RunSummary { Total = 1, Failed = 1 }); }
/// <inheritdoc/> protected override Task <RunSummary> RunTestAsync() { // Use -1 for the index here so we don't collide with any legitimate test case IDs that might've been used var test = new XunitTest(TestCase, TestCase.DisplayName, testIndex: -1); var summary = new RunSummary { Total = 1 }; var testAssemblyUniqueID = TestCase.TestMethod.TestClass.TestCollection.TestAssembly.UniqueID; var testCaseUniqueID = TestCase.UniqueID; var testClassUniqueID = TestCase.TestMethod.TestClass.UniqueID; var testCollectionUniqueID = TestCase.TestMethod.TestClass.TestCollection.UniqueID; var testMethodUniqueID = TestCase.TestMethod.UniqueID; var testStarting = new _TestStarting { AssemblyUniqueID = testAssemblyUniqueID, TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestDisplayName = test.DisplayName, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testStarting)) { CancellationTokenSource.Cancel(); } else { summary.Failed = 1; var testFailed = new _TestFailed { AssemblyUniqueID = testAssemblyUniqueID, ExceptionParentIndices = new[] { -1 }, ExceptionTypes = new[] { typeof(InvalidOperationException).FullName }, ExecutionTime = 0m, Messages = new[] { TestCase.ErrorMessage }, StackTraces = new[] { "" }, Output = "", TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testFailed)) { CancellationTokenSource.Cancel(); } var testFinished = new _TestFinished { AssemblyUniqueID = testAssemblyUniqueID, ExecutionTime = 0m, Output = "", TestCaseUniqueID = testCaseUniqueID, TestClassUniqueID = testClassUniqueID, TestCollectionUniqueID = testCollectionUniqueID, TestMethodUniqueID = testMethodUniqueID, TestUniqueID = test.UniqueID }; if (!MessageBus.QueueMessage(testFinished)) { CancellationTokenSource.Cancel(); } } return(Task.FromResult(summary)); }