public static void Default()
        {
            var runner = TestableXunitTestAssemblyRunner.Create();

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel]", result);
        }
        public static void IsXunit()
        {
            var runner = TestableXunitTestAssemblyRunner.Create();

            var result = runner.GetTestFrameworkDisplayName();

            Assert.StartsWith("xUnit.net ", result);
        }
Пример #3
0
        public static async ValueTask Default()
        {
            await using var runner = TestableXunitTestAssemblyRunner.Create();

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith($"[collection-per-class, parallel ({Environment.ProcessorCount} threads)]", result);
        }
Пример #4
0
        public static async ValueTask IsXunit()
        {
            await using var runner = TestableXunitTestAssemblyRunner.Create();

            var result = runner.GetTestFrameworkDisplayName();

            Assert.StartsWith("xUnit.net ", result);
        }
        public static void CanSetTestCollectionOrdererInAssemblyAttribute()
        {
            var ordererAttribute = Mocks.TestCollectionOrdererAttribute <MyTestCollectionOrderer>();
            var assembly         = Mocks.TestAssembly(new[] { ordererAttribute });
            var runner           = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <MyTestCollectionOrderer>(runner.TestCollectionOrderer);
        }
        public static void Attribute_NonParallel()
        {
            var attribute = Mocks.CollectionBehaviorAttribute(disableTestParallelization: true);
            var assembly  = Mocks.TestAssembly(new[] { attribute });
            var runner    = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, non-parallel]", result);
        }
        public static void Attribute_MaxThreads()
        {
            var attribute = Mocks.CollectionBehaviorAttribute(maxParallelThreads: 3);
            var assembly  = Mocks.TestAssembly(new[] { attribute });
            var runner    = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (3 threads)]", result);
        }
        public static void Attribute_CollectionBehavior(CollectionBehavior behavior, string expectedDisplayText)
        {
            var attribute = Mocks.CollectionBehaviorAttribute(behavior, disableTestParallelization: true);
            var assembly  = Mocks.TestAssembly(new[] { attribute });
            var runner    = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith(string.Format("[{0}, non-parallel]", expectedDisplayText), result);
        }
        public static void TestOptions_NonParallel()
        {
            var options = TestFrameworkOptions.ForExecution();

            options.SetDisableParallelization(true);
            var runner = TestableXunitTestAssemblyRunner.Create(executionOptions: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, non-parallel]", result);
        }
Пример #10
0
        public static async ValueTask Attribute_Unlimited()
        {
            var attribute = Mocks.CollectionBehaviorAttribute(maxParallelThreads: -1);
            var assembly  = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { attribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (unlimited threads)]", result);
        }
Пример #11
0
        public static async ValueTask CanSetTestCollectionOrdererInAssemblyAttribute()
        {
            var ordererAttribute = Mocks.TestCollectionOrdererAttribute <MyTestCollectionOrderer>();
            var assembly         = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { ordererAttribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <MyTestCollectionOrderer>(runner.TestCollectionOrderer);
        }
Пример #12
0
        public static async ValueTask TestOptions_Unlimited()
        {
            var options = _TestFrameworkOptions.ForExecution();

            options.SetMaxParallelThreads(-1);
            await using var runner = TestableXunitTestAssemblyRunner.Create(executionOptions: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (unlimited threads)]", result);
        }
        public static void TestOptions_MaxThreads()
        {
            var options = TestFrameworkOptions.ForExecution();

            options.SetMaxParallelThreads(3);
            var runner = TestableXunitTestAssemblyRunner.Create(executionOptions: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (3 threads)]", result);
        }
Пример #14
0
        public static async ValueTask Attribute_CollectionBehavior(CollectionBehavior behavior, string expectedDisplayText)
        {
            var attribute = Mocks.CollectionBehaviorAttribute(behavior, disableTestParallelization: true);
            var assembly  = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { attribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith($"[{expectedDisplayText}, non-parallel]", result);
        }
        public static void Attribute_CustomCollectionFactory()
        {
            var factoryType = typeof(MyTestCollectionFactory);
            var attr        = Mocks.CollectionBehaviorAttribute(factoryType.FullName, factoryType.Assembly.FullName, disableTestParallelization: true);
            var assembly    = Mocks.TestAssembly(new[] { attr });
            var runner      = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[My Factory, non-parallel]", result);
        }
        public static void TestOptions_MaxThreads()
        {
            var options = new XunitExecutionOptions {
                MaxParallelThreads = 255
            };
            var runner = TestableXunitTestAssemblyRunner.Create(options: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (255 threads)]", result);
        }
        public static void SettingTestCollectionOrdererWithThrowingConstructorLogsDiagnosticMessage()
        {
            var ordererAttribute = Mocks.TestCollectionOrdererAttribute <MyCtorThrowingTestCollectionOrderer>();
            var assembly         = Mocks.TestAssembly(new[] { ordererAttribute });
            var runner           = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <DefaultTestCaseOrderer>(runner.TestCaseOrderer);
            var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <IDiagnosticMessage>());

            Assert.StartsWith("Assembly-level test collection orderer 'XunitTestAssemblyRunnerTests+TestCollectionOrderer+MyCtorThrowingTestCollectionOrderer' threw 'System.DivideByZeroException' during construction:", diagnosticMessage.Message);
        }
        public static void SettingUnknownTestCollectionOrderLogsDiagnosticMessage()
        {
            var ordererAttribute = Mocks.TestCollectionOrdererAttribute("UnknownType", "UnknownAssembly");
            var assembly         = Mocks.TestAssembly(new[] { ordererAttribute });
            var runner           = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <DefaultTestCollectionOrderer>(runner.TestCollectionOrderer);
            var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <IDiagnosticMessage>());

            Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for assembly-level test collection orderer", diagnosticMessage.Message);
        }
Пример #19
0
        public static void TestOptionsOverrideAttribute()
        {
            var attribute = Mocks.CollectionBehaviorAttribute(disableTestParallelization: true, maxParallelThreads: 127);
            var options   = new XunitExecutionOptions {
                DisableParallelization = false, MaxParallelThreads = 3
            };
            var assembly = Mocks.TestAssembly(new[] { attribute });
            var runner   = TestableXunitTestAssemblyRunner.Create(assembly: assembly, options: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (3 threads)]", result);
        }
Пример #20
0
        public static async ValueTask SettingUnknownTestCaseOrderLogsDiagnosticMessage()
        {
            var ordererAttribute = Mocks.TestCaseOrdererAttribute("UnknownType", "UnknownAssembly");
            var assembly         = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { ordererAttribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <DefaultTestCaseOrderer>(runner.TestCaseOrderer);
            var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <_DiagnosticMessage>());

            Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for assembly-level test case orderer", diagnosticMessage.Message);
        }
Пример #21
0
        public static async ValueTask SettingTestCaseOrdererWithThrowingConstructorLogsDiagnosticMessage()
        {
            var ordererAttribute = Mocks.TestCaseOrdererAttribute <MyCtorThrowingTestCaseOrderer>();
            var assembly         = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { ordererAttribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly);

            runner.Initialize();

            Assert.IsType <DefaultTestCaseOrderer>(runner.TestCaseOrderer);
            var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <_DiagnosticMessage>());

            Assert.StartsWith("Assembly-level test case orderer 'XunitTestAssemblyRunnerTests+TestCaseOrderer+MyCtorThrowingTestCaseOrderer' threw 'System.DivideByZeroException' during construction: Attempted to divide by zero.", diagnosticMessage.Message);
        }
Пример #22
0
        public static async void Parallel_SingleThread()
        {
            var passing = Mocks.XunitTestCase <ClassUnderTest>("Passing");
            var other   = Mocks.XunitTestCase <ClassUnderTest>("Other");
            var options = new XunitExecutionOptions {
                MaxParallelThreads = 1
            };
            var runner = TestableXunitTestAssemblyRunner.Create(testCases: new[] { passing, other }, options: options);

            await runner.RunAsync();

            var threadIDs = runner.TestCasesRun.Select(x => x.Item1).ToList();

            Assert.Equal(threadIDs[0], threadIDs[1]);
        }
Пример #23
0
        public static async ValueTask TestOptionsOverrideAttribute()
        {
            var attribute = Mocks.CollectionBehaviorAttribute(disableTestParallelization: true, maxParallelThreads: 127);
            var options   = _TestFrameworkOptions.ForExecution();

            options.SetDisableParallelization(false);
            options.SetMaxParallelThreads(3);
            var assembly = Mocks.TestAssembly("assembly.dll", assemblyAttributes: new[] { attribute });

            await using var runner = TestableXunitTestAssemblyRunner.Create(assembly: assembly, executionOptions: options);

            var result = runner.GetTestFrameworkEnvironment();

            Assert.EndsWith("[collection-per-class, parallel (3 threads)]", result);
        }
Пример #24
0
        public static async ValueTask Parallel_SingleThread()
        {
            var passing = TestData.XunitTestCase <ClassUnderTest>("Passing");
            var other   = TestData.XunitTestCase <ClassUnderTest>("Other");
            var options = _TestFrameworkOptions.ForExecution();

            options.SetMaxParallelThreads(1);
            await using var runner = TestableXunitTestAssemblyRunner.Create(testCases: new[] { passing, other }, executionOptions: options);

            await runner.RunAsync();

            var threadIDs = runner.TestCasesRun.Select(x => x.Item1).ToList();

            Assert.Equal(threadIDs[0], threadIDs[1]);
        }
        public static async void NonParallel()
        {
            var passing = Mocks.XunitTestCase <ClassUnderTest>("Passing");
            var other   = Mocks.XunitTestCase <ClassUnderTest>("Other");
            var options = TestFrameworkOptions.ForExecution();

            options.SetDisableParallelization(true);
            var runner = TestableXunitTestAssemblyRunner.Create(testCases: new[] { passing, other }, executionOptions: options);

            await runner.RunAsync();

            var threadIDs = runner.TestCasesRun.Select(x => x.Item1).ToList();

            Assert.Equal(threadIDs[0], threadIDs[1]);
        }