Пример #1
0
        private void ConfigureIsolationBehavior()
        {
            var attributeInfo = TestAssembly.Assembly.GetCustomAttributes(typeof(IsolationBehaviorAttribute)).SingleOrDefault();

            if (attributeInfo == null)
            {
                return;
            }

            var args           = attributeInfo.GetConstructorArguments().ToArray();
            var isolationLevel = (IsolationLevel)args[0];

            switch (isolationLevel)
            {
            case IsolationLevel.Default:
                return;

            case IsolationLevel.Custom:
                var type = (Type)args[1];
                _isolationBehavior = (IIsolationBehavior)ObjectFactory.CreateInstance(type, null);
                break;

            case IsolationLevel.Collections:
                _isolationBehavior = new IsolateTestCollectionBehavior();
                break;

            default:
                throw new InvalidOperationException($"Unknown isolation level: {isolationLevel}");
            }
        }
Пример #2
0
        public TestCollectionRunner(ITestCollection testCollection, IReadOnlyList <IXunitTestCase> testCases, IMessageSink diagnosticMessageSink, IMessageBus messageBus, ITestCaseOrderer testCaseOrderer, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource, IMessageSinkWithEvents meeMessageSinkWithEvents, TestCaseDeserializerArgs testCaseDeserializerArgs, IIsolationBehavior isolationBehavior, Type[] appDomainFixtureTypes, TaskFactory dispositionTaskFactory)
            : base(testCollection, testCases, diagnosticMessageSink, messageBus, testCaseOrderer, aggregator, cancellationTokenSource)
        {
            _meeMessageSinkWithEvents = meeMessageSinkWithEvents;
            _testCaseDeserializerArgs = testCaseDeserializerArgs;
            _appDomainFixtureTypes    = appDomainFixtureTypes;
            _dispositionTaskFactory   = dispositionTaskFactory;

            RunIsolated = isolationBehavior?.IsolateTestCollection(testCollection, testCases) ?? false;
        }