Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with min
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

// 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);
}
}
}