mirror of https://github.com/dotnet/tye.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.9 KiB
73 lines
2.9 KiB
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Testing.xunit;
|
|
using Xunit.Abstractions;
|
|
using Xunit.Sdk;
|
|
|
|
namespace Microsoft.AspNetCore.Testing
|
|
{
|
|
internal 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);
|
|
}
|
|
}
|
|
}
|
|
|