Пример #1
0
        public virtual TestRunState Run(IEnumerable <ITestCase> testCases = null, TestRunState initialRunState = TestRunState.NoTests)
        {
            try
            {
                if (testCases != null)
                {
                    testCases = testCases.ToList();
                }

                var visitor = new ResultVisitor(testListener)
                {
                    TestRunState = initialRunState
                };
                toDispose.Push(visitor);

                if (testCases == null)
                {
                    xunit.Run(visitor, new XunitDiscoveryOptions(configuration), new XunitExecutionOptions(configuration));
                }
                else
                {
                    xunit.Run(testCases, visitor, new XunitExecutionOptions(configuration));
                }

                visitor.Finished.WaitOne();

                return(visitor.TestRunState);
            }
            catch (Exception ex)
            {
                testListener.WriteLine("Error during test execution:\r\n" + ex, Category.Error);
                return(TestRunState.Error);
            }
        }
Пример #2
0
    public List <IMessageSinkMessage> Run(Type[] types, Func <IMessageSinkMessage, bool> cancellationThunk = null)
    {
        Xunit2 = new Xunit2(new NullSourceInformationProvider(), new Uri(types[0].Assembly.CodeBase).LocalPath, configFileName: null, shadowCopy: true);

        bool cancelled = false;
        Func <IMessageSinkMessage, bool> wrapper = msg =>
        {
            var result = true;

            if (cancellationThunk != null)
            {
                result = cancellationThunk(msg);
            }

            if (!result)
            {
                cancelled = true;
            }

            return(result);
        };

        var discoverySink = new SpyMessageSink <IDiscoveryCompleteMessage>(wrapper);

        foreach (Type type in types)
        {
            Xunit2.Find(type.FullName, includeSourceInformation: false, messageSink: discoverySink);
            discoverySink.Finished.WaitOne();
            discoverySink.Finished.Reset();
        }

        if (cancelled)
        {
            return(new List <IMessageSinkMessage>());
        }

        var testCases = discoverySink.Messages.OfType <ITestCaseDiscoveryMessage>().Select(msg => msg.TestCase).ToArray();

        var runSink = new SpyMessageSink <ITestAssemblyFinished>(cancellationThunk);

        Xunit2.Run(testCases, runSink);
        runSink.Finished.WaitOne();

        return(runSink.Messages.ToList());
    }
Пример #3
0
    public List <IMessageSinkMessage> Run(Type[] types)
    {
        Xunit2 = new Xunit2(new NullSourceInformationProvider(), types[0].Assembly.GetLocalCodeBase(), configFileName: null, shadowCopy: true);

        var discoverySink = new SpyMessageSink <IDiscoveryCompleteMessage>();

        foreach (Type type in types)
        {
            Xunit2.Find(type.FullName, includeSourceInformation: false, messageSink: discoverySink, options: new XunitDiscoveryOptions());
            discoverySink.Finished.WaitOne();
            discoverySink.Finished.Reset();
        }

        var testCases = discoverySink.Messages.OfType <ITestCaseDiscoveryMessage>().Select(msg => msg.TestCase).ToArray();

        var runSink = new SpyMessageSink <ITestAssemblyFinished>();

        Xunit2.Run(testCases, runSink, new XunitExecutionOptions());
        runSink.Finished.WaitOne();

        return(runSink.Messages.ToList());
    }
Пример #4
0
        void RunTestsInAssembly(IFrameworkHandle frameworkHandle, List<IDisposable> toDispose, string assemblyFileName, IEnumerable<TestCase> testCases = null)
        {
            if (cancelled)
                return;

            var xunit2 = new Xunit2(SourceInformationProvider, assemblyFileName, configFileName: null, shadowCopy: true);
            toDispose.Add(xunit2);

            if (testCases == null)
            {
                using (var visitor = new TestDiscoveryVisitor())
                {
                    xunit2.Find(includeSourceInformation: true, messageSink: visitor);
                    visitor.Finished.WaitOne();
                    testCases = visitor.TestCases.Select(tc => VsDiscoveryVisitor.CreateVsTestCase(frameworkHandle, assemblyFileName, xunit2, tc)).ToList();
                }
            }

            var xunitTestCases = testCases.ToDictionary(tc => xunit2.Deserialize(tc.GetPropertyValue<string>(SerializedTestCaseProperty, null)));

            using (var executionVisitor = new VsExecutionVisitor(assemblyFileName, frameworkHandle, xunitTestCases, () => cancelled))
            {
                xunit2.Run(xunitTestCases.Keys.ToList(), executionVisitor);
                executionVisitor.Finished.WaitOne();
            }
        }