Пример #1
0
        public async void After_Failing_SeesCleaningUp()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Failing", displayName: "Test display name");

            await invoker.RunAsync();

            var context = invoker.AfterTestMethodInvoked_Context;

            Assert.NotNull(context);
            Assert.Equal(TestEngineStatus.Running, context.TestAssemblyStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCollectionStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestClassStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestMethodStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCaseStatus);
            Assert.Equal(TestEngineStatus.CleaningUp, context.TestStatus);
            var test = context.Test;

            Assert.NotNull(test);
            Assert.Equal("Test display name", test.DisplayName);
            var testState = context.TestState;

            Assert.NotNull(testState);
            Assert.Equal(
                "Assert.True() Failure" + Environment.NewLine +
                "Expected: True" + Environment.NewLine +
                "Actual:   False",
                Assert.Single(testState.ExceptionMessages !)
                );
            Assert.Equal(-1, Assert.Single(testState.ExceptionParentIndices !));
            Assert.Single(testState.ExceptionStackTraces !);
            Assert.Equal(typeof(TrueException).FullName, Assert.Single(testState.ExceptionTypes !));
            Assert.True(testState.ExecutionTime > 0m);
            Assert.Equal(FailureCause.Assertion, testState.FailureCause);
            Assert.Equal(TestResult.Failed, testState.Result);
        }
Пример #2
0
        public async void After_Exception_SeesCleaningUp()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("FactWithParameter", displayName: "Test display name");

            await invoker.RunAsync();

            var context = invoker.AfterTestMethodInvoked_Context;

            Assert.NotNull(context);
            Assert.Equal(TestEngineStatus.Running, context.TestAssemblyStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCollectionStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestClassStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestMethodStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCaseStatus);
            Assert.Equal(TestEngineStatus.CleaningUp, context.TestStatus);
            var test = context.Test;

            Assert.NotNull(test);
            Assert.Equal("Test display name", test.DisplayName);
            var testState = context.TestState;

            Assert.NotNull(testState);
            Assert.Equal("The test method expected 1 parameter value, but 0 parameter values were provided.", Assert.Single(testState.ExceptionMessages !));
            Assert.Equal(-1, Assert.Single(testState.ExceptionParentIndices !));
            Assert.Single(testState.ExceptionStackTraces !);
            Assert.Equal(typeof(InvalidOperationException).FullName, Assert.Single(testState.ExceptionTypes !));
            Assert.True(testState.ExecutionTime > 0m);
            Assert.Equal(FailureCause.Exception, testState.FailureCause);
            Assert.Equal(TestResult.Failed, testState.Result);
        }
Пример #3
0
        public async void After_Passing_SeesCleaningUp()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Passing", displayName: "Test display name");

            await invoker.RunAsync();

            var context = invoker.AfterTestMethodInvoked_Context;

            Assert.NotNull(context);
            Assert.Equal(TestEngineStatus.Running, context.TestAssemblyStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCollectionStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestClassStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestMethodStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCaseStatus);
            Assert.Equal(TestEngineStatus.CleaningUp, context.TestStatus);
            var test = context.Test;

            Assert.NotNull(test);
            Assert.Equal("Test display name", test.DisplayName);
            var testState = context.TestState;

            Assert.NotNull(testState);
            Assert.Null(testState.ExceptionMessages);
            Assert.Null(testState.ExceptionParentIndices);
            Assert.Null(testState.ExceptionStackTraces);
            Assert.Null(testState.ExceptionTypes);
            Assert.True(testState.ExecutionTime > 0m);
            Assert.Null(testState.FailureCause);
            Assert.Equal(TestResult.Passed, testState.Result);
        }
Пример #4
0
        public static async void CancellationRequested_DisposeCalledIfClassConstructed()
        {
            var classConstructed = false;

            bool cancelThunk(_MessageSinkMessage msg)
            {
                if (msg is _TestClassConstructionFinished)
                {
                    classConstructed = true;
                }
                return(!classConstructed);
            }

            var messageBus = new SpyMessageBus(cancelThunk);
            var invoker    = TestableTestInvoker.Create <DisposableClass>("Passing", messageBus, "Display Name");

            await invoker.RunAsync();

            Assert.Collection(
                messageBus.Messages,
                msg => Assert.IsType <_TestClassConstructionStarting>(msg),
                msg => Assert.IsType <_TestClassConstructionFinished>(msg),
                msg => Assert.IsType <_TestClassDisposeStarting>(msg),
                msg => Assert.IsType <_TestClassDisposeFinished>(msg)
                );
        }
Пример #5
0
    public static async void Messages_NonStaticTestMethod_WithDispose()
    {
        var messageBus = new SpyMessageBus();
        var invoker    = TestableTestInvoker.Create <DisposableClass>("Passing", messageBus, "Display Name");

        await invoker.RunAsync();

        Assert.Collection(messageBus.Messages,
                          msg => Assert.IsAssignableFrom <ITestClassConstructionStarting>(msg),
                          msg => Assert.IsAssignableFrom <ITestClassConstructionFinished>(msg),
                          msg =>
        {
            var starting = Assert.IsAssignableFrom <ITestClassDisposeStarting>(msg);
            Assert.Same(invoker.TestCase.TestMethod.TestClass.TestCollection, starting.TestCollection);
            Assert.Same(invoker.TestCase, starting.TestCase);
            Assert.Equal("Display Name", starting.Test.DisplayName);
        },
                          msg =>
        {
            var finished = Assert.IsAssignableFrom <ITestClassDisposeFinished>(msg);
            Assert.Same(invoker.TestCase.TestMethod.TestClass.TestCollection, finished.TestCollection);
            Assert.Same(invoker.TestCase, finished.TestCase);
            Assert.Equal("Display Name", finished.Test.DisplayName);
        }
                          );
    }
Пример #6
0
        public static async void Passing()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Passing");

            var result = await invoker.RunAsync();

            Assert.NotEqual(0m, result);
            Assert.Null(invoker.Aggregator.ToException());
        }
Пример #7
0
        public static async void NotEnoughParameterValues()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("FactWithParameter");

            await invoker.RunAsync();

            var ex = Assert.IsType <InvalidOperationException>(invoker.Aggregator.ToException());

            Assert.Equal("The test method expected 1 parameter value, but 0 parameter values were provided.", ex.Message);
        }
Пример #8
0
        public static async void TooManyParameterValues()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Passing", testMethodArguments: new object[] { 42 });

            await invoker.RunAsync();

            var ex = Assert.IsType <InvalidOperationException>(invoker.Aggregator.ToException());

            Assert.Equal("The test method expected 0 parameter values, but 1 parameter value was provided.", ex.Message);
        }
Пример #9
0
    public static async void Failing()
    {
        var messageBus = new SpyMessageBus();
        var invoker    = TestableTestInvoker.Create <NonDisposableClass>("Failing", messageBus);

        var result = await invoker.RunAsync();

        Assert.NotEqual(0m, result);
        Assert.IsType <TrueException>(invoker.Aggregator.ToException());
    }
Пример #10
0
        public static async void Messages_StaticTestMethod()
        {
            var messageBus = new SpyMessageBus();
            var invoker    = TestableTestInvoker.Create <NonDisposableClass>("StaticPassing", messageBus);

            await invoker.RunAsync();

            Assert.Empty(messageBus.Messages);
            Assert.True(invoker.BeforeTestMethodInvoked_Called);
            Assert.True(invoker.AfterTestMethodInvoked_Called);
        }
Пример #11
0
        public static async ValueTask ClassCreationFailure_LogsExceptionIntoAggregator()
        {
            var invoker = TestableTestInvoker.Create <NonCreateableClass>("Passing");

            await invoker.RunAsync();

            var ex = invoker.Aggregator.ToException();

            Assert.IsType <MissingMethodException>(ex);
            Assert.Equal("Constructor on type 'TestInvokerTests+NonCreateableClass' not found.", ex.Message);
        }
Пример #12
0
        public static async void Messages_NonStaticTestMethod_NoDispose()
        {
            var messageBus = new SpyMessageBus();
            var invoker    = TestableTestInvoker.Create <NonDisposableClass>("Passing", messageBus, "Display Name");

            await invoker.RunAsync();

            Assert.Collection(
                messageBus.Messages,
                msg => Assert.IsType <_TestClassConstructionStarting>(msg),
                msg => Assert.IsType <_TestClassConstructionFinished>(msg)
                );
        }
Пример #13
0
        public static async void CancellationRequested_DoesNotInvokeTestMethod()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Failing");

            invoker.TokenSource.Cancel();

            var result = await invoker.RunAsync();

            Assert.Equal(0m, result);
            Assert.Null(invoker.Aggregator.ToException());
            Assert.False(invoker.BeforeTestMethodInvoked_Called);
            Assert.False(invoker.AfterTestMethodInvoked_Called);
        }
Пример #14
0
        public async void Executing_SeesRunning()
        {
            var invoker = TestableTestInvoker.Create <NonDisposableClass>("Passing", displayName: "Test display name");

            await invoker.RunAsync();

            var context = invoker.InvokeTestMethodAsync_Context;

            Assert.NotNull(context);
            Assert.Equal(TestEngineStatus.Running, context.TestAssemblyStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCollectionStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestClassStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestMethodStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestCaseStatus);
            Assert.Equal(TestEngineStatus.Running, context.TestStatus);
            var test = context.Test;

            Assert.NotNull(test);
            Assert.Equal("Test display name", test.DisplayName);
            Assert.Null(context.TestState);
        }