| File: xunit\AspNetTestMethodRunner.cs | Web Access |
| Project: src\aspnetcore\src\Testing\src\Microsoft.AspNetCore.InternalTesting.csproj (Microsoft.AspNetCore.InternalTesting) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.InternalTesting.xunit; using Xunit.Abstractions; using Xunit.Sdk; namespace Microsoft.AspNetCore.InternalTesting; internal sealed class AspNetTestMethodRunner : XunitTestMethodRunner { private readonly object[] _constructorArguments; private readonly IMessageSink _diagnosticMessageSink; public AspNetTestMethodRunner( ITestMethod testMethod, IReflectionTypeInfo @class, IReflectionMethodInfo method, IEnumerable<IXunitTestCase> testCases, IMessageSink diagnosticMessageSink, IMessageBus messageBus, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource, object[] constructorArguments) : base(testMethod, @class, method, testCases, diagnosticMessageSink, messageBus, aggregator, cancellationTokenSource, constructorArguments) { _diagnosticMessageSink = diagnosticMessageSink; _constructorArguments = constructorArguments; } protected override Task<RunSummary> RunTestCaseAsync(IXunitTestCase testCase) { if (testCase.GetType() == typeof(XunitTestCase)) { // If we get here this is a 'regular' test case, not something that represents a skipped test. // // We can take control of it's invocation thusly. var runner = new AspNetTestCaseRunner( testCase, testCase.DisplayName, testCase.SkipReason, _constructorArguments, testCase.TestMethodArguments, MessageBus, new ExceptionAggregator(Aggregator), CancellationTokenSource); return runner.RunAsync(); } if (testCase.GetType() == typeof(XunitTheoryTestCase)) { // If we get here this is a 'regular' theory test case, not something that represents a skipped test. // // We can take control of it's invocation thusly. var runner = new AspNetTheoryTestCaseRunner( testCase, testCase.DisplayName, testCase.SkipReason, _constructorArguments, _diagnosticMessageSink, MessageBus, new ExceptionAggregator(Aggregator), CancellationTokenSource); return runner.RunAsync(); } return base.RunTestCaseAsync(testCase); } }