public static async void UsesCustomTestOrderer()
        {
            var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing");
            var runner   = TestableXunitTestClassRunner.Create(testCase);

            await runner.RunAsync();

            Assert.IsType <CustomTestCaseOrderer>(runner.TestCaseOrderer);
        }
Example #2
0
    public static async void TestClassCanHavePublicAndPrivateConstructor()
    {
        var testCase = TestData.XunitTestCase <ClassWithMixedConstructors>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.Null(runner.RunTestMethodAsync_AggregatorResult);
    }
    public static async void TestClassCanHaveStaticConstructor()
    {
        var testCase = Mocks.XunitTestCase <ClassWithStaticConstructor>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.Null(runner.RunTestMethodAsync_AggregatorResult);
    }
    public static async void ClassCannotBeDecoratedWithICollectionFixture()
    {
        var testCase = Mocks.XunitTestCase <ClassWithCollectionFixture>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult);
        Assert.Equal("A test class may not be decorated with ICollectionFixture<> (decorate the test collection class instead).", runner.RunTestMethodAsync_AggregatorResult.Message);
    }
    public static async void TestClassCannotHaveMoreThanOneConstructor()
    {
        var testCase = Mocks.XunitTestCase <ClassWithTwoConstructors>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult);
        Assert.Equal("A test class may only define a single public constructor.", runner.RunTestMethodAsync_AggregatorResult.Message);
    }
    public static async void DisposesFixtures()
    {
        var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        var fixtureUnderTest = runner.ClassFixtureMappings.Values.OfType <FixtureUnderTest>().Single();

        Assert.True(fixtureUnderTest.Disposed);
    }
    public static async void UnresolvedConstructorParameterOnClassFixture_ReturnsError()
    {
        var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithDependency>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        var ex = Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult);

        Assert.Equal("Class fixture type 'XunitTestClassRunnerTests+ClassFixtureWithCollectionFixtureDependency' had one or more unresolved constructor arguments: DependentCollectionFixture collectionFixture", ex.Message);
    }
    public static async void CanLogSinkMessageFromClassFixture()
    {
        var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithMessageSinkDependency>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

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

        Assert.Equal("ClassFixtureWithMessageSinkDependency constructor message", diagnosticMessage.Message);
    }
    public static async void MultiplePublicConstructorsOnClassFixture_ReturnsError()
    {
        var testCase = Mocks.XunitTestCase <TestClassWithMultiCtorClassFixture>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        var ex = Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult);

        Assert.Equal("Class fixture type 'XunitTestClassRunnerTests+ClassFixtureWithMultipleConstructors' may only define a single public constructor.", ex.Message);
    }
        public static async void SettingUnknownTestCaseOrderLogsDiagnosticMessage()
        {
            var testCase = Mocks.XunitTestCase <TestClassWithUnknownTestCaseOrderer>("Passing");
            var runner   = TestableXunitTestClassRunner.Create(testCase);

            await runner.RunAsync();

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

            Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for class-level test case orderer on test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithUnknownTestCaseOrderer'", diagnosticMessage.Message);
        }
        public static async void SettingTestCaseOrdererWithThrowingConstructorLogsDiagnosticMessage()
        {
            var testCase = Mocks.XunitTestCase <TestClassWithCtorThrowingTestCaseOrder>("Passing");
            var runner   = TestableXunitTestClassRunner.Create(testCase);

            await runner.RunAsync();

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

            Assert.StartsWith("Class-level test case orderer 'XunitTestClassRunnerTests+TestCaseOrderer+MyCtorThrowingTestCaseOrderer' for test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithCtorThrowingTestCaseOrder' threw 'System.DivideByZeroException' during construction:", diagnosticMessage.Message);
        }
    public static async void CreatesFixturesFromClassAndCollection()
    {
        var collection = new TestCollection(Mocks.TestAssembly(), Reflector.Wrap(typeof(CollectionUnderTest)), null);
        var testCase   = Mocks.XunitTestCase <ClassUnderTest>("Passing", collection);
        var runner     = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.Collection(runner.ClassFixtureMappings.OrderBy(mapping => mapping.Key.Name),
                          mapping => Assert.IsType <FixtureUnderTest>(mapping.Value),
                          mapping => Assert.IsType <object>(mapping.Value)
                          );
    }
    public static async void CanInjectMessageSinkIntoClassFixture()
    {
        var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithMessageSinkDependency>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        await runner.RunAsync();

        Assert.Null(runner.RunTestMethodAsync_AggregatorResult);
        var classFixture = runner.ClassFixtureMappings.Values.OfType <ClassFixtureWithMessageSinkDependency>().Single();

        Assert.NotNull(classFixture.MessageSink);
        Assert.Same(runner.DiagnosticMessageSink, classFixture.MessageSink);
    }
    public static async void CanInjectCollectionFixtureIntoClassFixture()
    {
        var testCase          = Mocks.XunitTestCase <TestClassWithClassFixtureWithDependency>("Passing");
        var collectionFixture = new DependentCollectionFixture();
        var runner            = TestableXunitTestClassRunner.Create(testCase, collectionFixture);

        await runner.RunAsync();

        Assert.Null(runner.RunTestMethodAsync_AggregatorResult);
        var classFixture = runner.ClassFixtureMappings.Values.OfType <ClassFixtureWithCollectionFixtureDependency>().Single();

        Assert.Same(collectionFixture, classFixture.CollectionFixture);
    }
Example #15
0
        public static async void SettingUnknownTestCaseOrderLogsDiagnosticMessage()
        {
            var spy = SpyMessageSink.Capture();

            TestContext.Current !.DiagnosticMessageSink = spy;
            var testCase = TestData.XunitTestCase <TestClassWithUnknownTestCaseOrderer>("Passing");
            var runner   = TestableXunitTestClassRunner.Create(testCase);

            await runner.RunAsync();

            Assert.IsType <MockTestCaseOrderer>(runner.RunTestMethodsAsync_TestCaseOrderer);
            var diagnosticMessage = Assert.Single(spy.Messages.Cast <_DiagnosticMessage>());

            Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for class-level test case orderer on test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithUnknownTestCaseOrderer'", diagnosticMessage.Message);
        }
    public static async void PassesFixtureValuesToConstructor()
    {
        var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase, 42, "Hello, world!", 21.12m);

        await runner.RunAsync();

        var args = Assert.Single(runner.ConstructorArguments);

        Assert.Collection(args,
                          arg => Assert.IsType <FixtureUnderTest>(arg),
                          arg => Assert.Equal("Hello, world!", arg),
                          arg => Assert.Equal(21.12m, arg)
                          );
    }
Example #17
0
        public static async void SettingTestCaseOrdererWithThrowingConstructorLogsDiagnosticMessage()
        {
            var spy = SpyMessageSink.Capture();

            TestContext.Current !.DiagnosticMessageSink = spy;
            var testCase = TestData.XunitTestCase <TestClassWithCtorThrowingTestCaseOrder>("Passing");
            var runner   = TestableXunitTestClassRunner.Create(testCase);

            await runner.RunAsync();

            Assert.IsType <MockTestCaseOrderer>(runner.RunTestMethodsAsync_TestCaseOrderer);
            var diagnosticMessage = Assert.Single(spy.Messages.Cast <_DiagnosticMessage>());

            Assert.StartsWith("Class-level test case orderer 'XunitTestClassRunnerTests+TestCaseOrderer+MyCtorThrowingTestCaseOrderer' for test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithCtorThrowingTestCaseOrder' threw 'System.DivideByZeroException' during construction: Attempted to divide by zero.", diagnosticMessage.Message);
        }
    public static async void DisposeAndAsyncLifetimeShouldBeCalledInTheRightOrder()
    {
        var testCase = Mocks.XunitTestCase <TestClassForFixtureAsyncLifetimeAndDisposableUnderTest>("Passing");
        var runner   = TestableXunitTestClassRunner.Create(testCase);

        var runnerSessionTask = runner.RunAsync();

        await Task.Delay(500);

        var fixtureUnderTest = runner.ClassFixtureMappings.Values.OfType <FixtureAsyncLifetimeAndDisposableUnderTest>().Single();

        Assert.True(fixtureUnderTest.DisposeAsyncCalled);
        Assert.False(fixtureUnderTest.Disposed);

        fixtureUnderTest.DisposeAsyncSignaler.SetResult(true);

        await runnerSessionTask;

        Assert.True(fixtureUnderTest.Disposed);
    }