Beispiel #1
0
    public async void OnlyIncludesLongRunningTests()
    {
        var events = new List <LongRunningTestsSummary>();

        using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary));
        var testCaseStarting1 = new _TestCaseStarting {
            TestCaseUniqueID = "test-case-id-1"
        };
        var testCaseStarting2 = new _TestCaseStarting {
            TestCaseUniqueID = "test-case-id-2"
        };

        sink.OnMessage(new _TestAssemblyStarting());
        sink.OnMessage(testCaseStarting1);
        await sink.AdvanceClockAsync(500);

        sink.OnMessage(testCaseStarting2);          // Started later, hasn't run long enough
        await sink.AdvanceClockAsync(500);

        sink.OnMessage(new _TestCaseFinished {
            TestCaseUniqueID = "test-case-id-1"
        });
        sink.OnMessage(new _TestCaseFinished {
            TestCaseUniqueID = "test-case-id-2"
        });
        sink.OnMessage(new _TestAssemblyFinished());

        var @event = Assert.Single(events);

        Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
        var receivedTestCasePair = Assert.Single(@event.TestCases);

        Assert.Same(testCaseStarting1, receivedTestCasePair.Key);
        Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value);
    }
Beispiel #2
0
    public async void LongRunningTest_Once_WithDiagnosticMessageSink()
    {
        var events   = new List <_DiagnosticMessage>();
        var diagSink = Substitute.For <_IMessageSink>();

        diagSink
        .WhenForAnyArgs(x => x.OnMessage(null !))
        .Do(callInfo =>
        {
            var message = callInfo.Arg <_MessageSinkMessage>();
            if (message is _DiagnosticMessage diagnosticMessage)
            {
                events.Add(diagnosticMessage);
            }
        });

        using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink);
        var testCaseStarting = new _TestCaseStarting {
            TestCaseDisplayName = "My test display name", TestCaseUniqueID = "test-case-id"
        };

        sink.OnMessage(new _TestAssemblyStarting());
        sink.OnMessage(testCaseStarting);
        await sink.AdvanceClockAsync(1500);

        sink.OnMessage(new _TestCaseFinished {
            TestCaseUniqueID = "test-case-id"
        });
        sink.OnMessage(new _TestAssemblyFinished());

        var @event = Assert.Single(events);

        Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message);
    }
Beispiel #3
0
    public async void LongRunningTest_Once_WithCallback()
    {
        var events = new List <LongRunningTestsSummary>();

        using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary));
        var testCaseStarting = new _TestCaseStarting {
            TestCaseUniqueID = "test-case-id"
        };

        sink.OnMessage(new _TestAssemblyStarting());
        sink.OnMessage(testCaseStarting);
        await sink.AdvanceClockAsync(1500);

        sink.OnMessage(new _TestCaseFinished {
            TestCaseUniqueID = "test-case-id"
        });
        sink.OnMessage(new _TestAssemblyFinished());

        var @event = Assert.Single(events);

        Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
        var receivedTestCasePair = Assert.Single(@event.TestCases);

        Assert.Same(testCaseStarting, receivedTestCasePair.Key);
        Assert.Equal(TimeSpan.FromMilliseconds(1500), receivedTestCasePair.Value);
    }
    public async void LongRunningTest_Twice_WithCallback()
    {
        var events = new List<LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase = Substitute.For<ITestCase>();

            sink.OnMessage(Substitute.For<ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase));
            await sink.AdvanceClockAsync(1000);
            await sink.AdvanceClockAsync(500);
            await sink.AdvanceClockAsync(500);
            sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For<ITestAssemblyFinished>());

            Assert.Collection(events,
                @event =>
                {
                    Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
                    var receivedTestCasePair = Assert.Single(@event.TestCases);
                    Assert.Same(testCase, receivedTestCasePair.Key);
                    Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value);
                },
                @event =>
                {
                    Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
                    var receivedTestCasePair = Assert.Single(@event.TestCases);
                    Assert.Same(testCase, receivedTestCasePair.Key);
                    Assert.Equal(TimeSpan.FromSeconds(2), receivedTestCasePair.Value);
                }
            );
        }
    }
Beispiel #5
0
    public async void OnlyIncludesLongRunningTests()
    {
        var events = new List <LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase1 = Substitute.For <ITestCase>();
            var testCase2 = Substitute.For <ITestCase>();

            sink.OnMessage(Substitute.For <ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase1));
            await sink.AdvanceClockAsync(500);

            sink.OnMessage(new TestCaseStarting(testCase2));  // Started later, hasn't run long enough
            await sink.AdvanceClockAsync(500);

            sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0));
            sink.OnMessage(new TestCaseFinished(testCase2, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For <ITestAssemblyFinished>());

            var @event = Assert.Single(events);
            Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
            var receivedTestCasePair = Assert.Single(@event.TestCases);
            Assert.Same(testCase1, receivedTestCasePair.Key);
            Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value);
        }
    }
    public async void OnlyIncludesLongRunningTests()
    {
        var events = new List<LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase1 = Substitute.For<ITestCase>();
            var testCase2 = Substitute.For<ITestCase>();

            sink.OnMessage(Substitute.For<ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase1));
            await sink.AdvanceClockAsync(500);
            sink.OnMessage(new TestCaseStarting(testCase2));  // Started later, hasn't run long enough
            await sink.AdvanceClockAsync(500);
            sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0));
            sink.OnMessage(new TestCaseFinished(testCase2, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For<ITestAssemblyFinished>());

            var @event = Assert.Single(events);
            Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
            var receivedTestCasePair = Assert.Single(@event.TestCases);
            Assert.Same(testCase1, receivedTestCasePair.Key);
            Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value);
        }
    }
Beispiel #7
0
    public async void LongRunningTest_Once_WithDiagnosticMessageSink()
    {
        var events   = new List <IDiagnosticMessage>();
        var diagSink = Substitute.For <IMessageSinkWithTypes>();

        diagSink.WhenForAnyArgs(x => x.OnMessageWithTypes(null, null))
        .Do(callInfo =>
        {
            var message           = callInfo.Arg <IMessageSinkMessage>();
            var diagnosticMessage = message as IDiagnosticMessage;
            if (diagnosticMessage != null)
            {
                events.Add(diagnosticMessage);
            }
        });

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink))
        {
            var testCase = Substitute.For <ITestCase>();
            testCase.DisplayName.Returns("My test display name");

            sink.OnMessage(Substitute.For <ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase));
            await sink.AdvanceClockAsync(1500);

            sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For <ITestAssemblyFinished>());

            var @event = Assert.Single(events);
            Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message);
        }
    }
    public async void ShortRunningTests_NoMessages()
    {
        var events = new List<LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase1 = Substitute.For<ITestCase>();

            sink.OnMessage(Substitute.For<ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase1));
            await sink.AdvanceClockAsync(100);
            sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For<ITestAssemblyFinished>());

            Assert.Empty(events);
        }
    }
Beispiel #9
0
    public async void ShortRunningTests_NoMessages()
    {
        var events = new List <LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase1 = Substitute.For <ITestCase>();

            sink.OnMessage(Substitute.For <ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase1));
            await sink.AdvanceClockAsync(100);

            sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For <ITestAssemblyFinished>());

            Assert.Empty(events);
        }
    }
Beispiel #10
0
    public async void ShortRunningTests_NoMessages()
    {
        var events = new List <LongRunningTestsSummary>();

        using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary));

        sink.OnMessage(new _TestAssemblyStarting());
        sink.OnMessage(new _TestCaseStarting {
            TestCaseUniqueID = "test-case-id"
        });
        await sink.AdvanceClockAsync(100);

        sink.OnMessage(new _TestCaseFinished {
            TestCaseUniqueID = "test-case-id"
        });
        sink.OnMessage(new _TestAssemblyFinished());

        Assert.Empty(events);
    }
Beispiel #11
0
    public async void LongRunningTest_Once_WithCallback()
    {
        var events = new List <LongRunningTestsSummary>();

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)))
        {
            var testCase = Substitute.For <ITestCase>();

            sink.OnMessage(Substitute.For <ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase));
            await sink.AdvanceClockAsync(1500);

            sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For <ITestAssemblyFinished>());

            var @event = Assert.Single(events);
            Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime);
            var receivedTestCasePair = Assert.Single(@event.TestCases);
            Assert.Same(testCase, receivedTestCasePair.Key);
            Assert.Equal(TimeSpan.FromMilliseconds(1500), receivedTestCasePair.Value);
        }
    }
    public async void LongRunningTest_Twice_WithDiagnosticMessageSink()
    {
        var events = new List<IDiagnosticMessage>();
        var diagSink = Substitute.For<IMessageSinkWithTypes>();
        diagSink.WhenForAnyArgs(x => x.OnMessageWithTypes(null, null))
                .Do(callInfo =>
                {
                    var message = callInfo.Arg<IMessageSinkMessage>();
                    var diagnosticMessage = message as IDiagnosticMessage;
                    if (diagnosticMessage != null)
                        events.Add(diagnosticMessage);
                });

        using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink))
        {
            var testCase = Substitute.For<ITestCase>();
            testCase.DisplayName.Returns("My test display name");

            sink.OnMessage(Substitute.For<ITestAssemblyStarting>());
            sink.OnMessage(new TestCaseStarting(testCase));
            await sink.AdvanceClockAsync(1000);
            await sink.AdvanceClockAsync(500);
            await sink.AdvanceClockAsync(500);
            sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0));
            sink.OnMessage(Substitute.For<ITestAssemblyFinished>());

            Assert.Collection(events,
                @event => Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message),
                @event => Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:02", @event.Message)
            );
        }
    }