Exemple #1
0
        public override async Task <RunSummary> RunAsync(IMessageSink diagnosticMessageSink, IMessageBus messageBus, object[] constructorArguments, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource)
        {
            using var threadRental = await ThreadRental.CreateAsync(UITestCase.GetAdapter(this.SynchronizationContextType), this.TestMethod);

            await threadRental.SynchronizationContext;

            return(await new UITheoryTestCaseRunner(this, this.DisplayName, this.SkipReason, constructorArguments, diagnosticMessageSink, messageBus, aggregator, cancellationTokenSource, threadRental).RunAsync());
        }
Exemple #2
0
        /// <inheritdoc/>
        public override Task <RunSummary> RunAsync(
            IMessageSink diagnosticMessageSink,
            IMessageBus messageBus,
            object[] constructorArguments,
            ExceptionAggregator aggregator,
            CancellationTokenSource cancellationTokenSource)
        {
            var task = Task.Run(
                async() =>
            {
                using var threadRental = await ThreadRental.CreateAsync(this.Adapter, this.TestMethod);
                await threadRental.SynchronizationContext;
                var runner = new UITestCaseRunner(this, this.DisplayName, this.SkipReason, constructorArguments, this.TestMethodArguments, messageBus, aggregator, cancellationTokenSource, threadRental);
                return(await runner.RunAsync());
            },
                cancellationTokenSource.Token);

            // We need to block the XUnit thread to ensure its concurrency throttle is effective.
            // See https://github.com/AArnott/Xunit.StaFact/pull/55#issuecomment-826187354 for details.
            RunSummary runSummary = task.GetAwaiter().GetResult();

            return(Task.FromResult(runSummary));
        }