Example #1
0
        public XUnitTestInfo GetTestInfo(string path, string[] supportAssemblies)
        {
            var infos = new List <TestCaseInfo>();

            if (null != path && File.Exists(path))
            {
                using (var controller = new XunitFrontController(AppDomainSupport.Denied, path))
                    using (var discoveryVisitor = new DefaultDiscoveryVisitor()) {
                        controller.Find(false, discoveryVisitor, TestFrameworkOptions.ForDiscovery());
                        discoveryVisitor.Finished.WaitOne();
                        foreach (var testCase in discoveryVisitor.TestCases)
                        {
                            infos.Add(new TestCaseInfo {
                                Id     = testCase.UniqueID,
                                Type   = testCase.TestMethod.TestClass.Class.Name,
                                Method = testCase.TestMethod.Method.Name,
                                Args   = testCase.TestMethodArguments
                            });
                        }
                    }
                // sort by type, method
                infos.Sort((info1, info2) => {
                    int i = string.Compare(info1.Type, info2.Type, StringComparison.Ordinal);
                    if (i == 0)
                    {
                        i = string.Compare(info1.Method, info2.Method, StringComparison.Ordinal);
                    }
                    return(i);
                });
            }
            var testInfo = new XUnitTestInfo();

            BuildTestInfo(testInfo, infos, 0);
            return(testInfo);
        }
Example #2
0
        /// <summary>
        /// Execute test cases.
        /// </summary>
        /// <param name="assembly">Assembly.</param>
        /// <param name="testInfos">Test infos.</param>
        /// <param name="executionListener">Execution listener.</param>
        /// <remarks>It uses xunit execution engine to execute the test cases.</remarks>
        public void Execute(string assembly, string[] nameFilter, IRemoteEventListener executionListener)
        {
            var lookup = new HashSet <string>();

            foreach (var testId in nameFilter)
            {
                lookup.Add(testId);
            }

            TestAssemblyConfiguration conf = LoadTestAssemblyConfiguration(assembly);
            var discoveryOptions           = TestFrameworkOptions.ForDiscovery(conf);
            var executionOptions           = TestFrameworkOptions.ForExecution(conf);

            executionOptions.SetSynchronousMessageReporting(true);

            // we don't want to run every test in the assembly
            // only the tests passed in "testInfos" argument
            using (var controller = new XunitFrontController(conf.AppDomainOrDefault, assembly, null, conf.ShadowCopyOrDefault, null, new NullSourceInformationProvider()))
                using (var discoveryVisitor = new DefaultDiscoveryVisitor(tc => lookup.Contains(tc.UniqueID)))
                    using (var executionVisitor = new DefaultExecutionVisitor(executionListener)) {
                        controller.Find(false, discoveryVisitor, discoveryOptions);
                        discoveryVisitor.Finished.WaitOne();

                        controller.RunTests(discoveryVisitor.TestCases, executionVisitor, executionOptions);
                        executionVisitor.Finished.WaitOne();
                    }
        }