コード例 #1
0
        public virtual async Task RazorTests()
        {
            // this simulates the work done by Xunit.Sdk.RazorTestDiscoverer (in Bunit.Xunit.dll)
            // because my testing library doesn't support that, but I want debugging!
            using var razorRenderer = new TestComponentRenderer();
            var tests = razorRenderer.GetRazorTestsFromComponent(this.GetType()).ToReadOnlyList();

            if (tests.Count == 1)
            {
                // this helps debugging tremendously because the foreach just swallows exceptions
                // I mean it doesn't catch them, but the IDE isn't showing them
                tests[0].RunTest().Wait();
            }
            else
            {
                int i = 1;
                foreach (var test in tests)
                {
                    Console.WriteLine($"Executing test {i}/{tests.Count}: '{test.Description}'");
                    await test.RunTest().ConfigureAwait(false);

                    i++;
                }
            }
        }
コード例 #2
0
        private IEnumerable <IXunitTestCase> DiscoverRazorTests(Type testComponent, ITestMethod testMethod)
        {
            DiagnosticMessageSink.OnMessage(new DiagnosticMessage($"{nameof(DiscoverRazorTests)}: Discovering in {testComponent.FullName}."));

            using var razorRenderer = new TestComponentRenderer();
            var tests = razorRenderer.GetRazorTestsFromComponent(testComponent);

            var result = tests.Count == 0
                                ? Array.Empty <IXunitTestCase>()
                                : new IXunitTestCase[tests.Count];

            for (int index = 0; index < tests.Count; index++)
            {
                var test       = tests[index];
                var testNumber = index + 1;
                var sourceInfo = _sourceInfoDiscoverer.GetSourceInformation(testComponent, test, testNumber);
                result[index] = new RazorTestCase(GetDisplayName(test, testNumber), test.Timeout, test.Skip, testNumber, testMethod, sourceInfo);
            }

            return(result);
        }
コード例 #3
0
        protected override object CreateTestClass()
        {
            if (!(Test is RazorTest razorTest))
            {
                throw new InvalidOperationException($"The type of {nameof(Test)} is not a {nameof(RazorTest)}. Cannot continue. #1");
            }

            using var razorRenderer = new TestComponentRenderer();
            var tests = razorRenderer.GetRazorTestsFromComponent(TestClass);

            if (tests.Count < razorTest.TestNumber)
            {
                throw new InvalidOperationException($"The razor test '{Test.DisplayName}' was not found in the test component '{TestClass.FullName}'. ");
            }

            var test = tests[razorTest.TestNumber - 1];

            // TODO: ensure that test has not been replaced somehow.

            return(test);
        }