Пример #1
0
        static int Main(string[] args)
        {
            if (args.Length == 0 || args.Length > 2)
            {
                Console.WriteLine("usage: TestRunner <assembly> [typeName]");
                return(2);
            }

            var testAssembly = args[0];
            var typeName     = args.Length == 2 ? args[1] : null;;

            using (var runner = AssemblyRunner.WithAppDomain(testAssembly))
            {
                runner.OnDiscoveryComplete = OnDiscoveryComplete;
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestStarting      = OnTestStarting;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestSkipped       = OnTestSkipped;

                Console.WriteLine("Discovering...");
                runner.Start(typeName);

                finished.WaitOne();
                finished.Dispose();

                return(result);
            }
        }
        public static int Main(string[] args)
        {
            string solutionDir =
                Path.GetDirectoryName(                                    // sw2urdf
                    Path.GetDirectoryName(                                // TestRunner
                        Path.GetDirectoryName(                            // bin
                            Path.GetDirectoryName(                        // x64
                                Path.GetDirectoryName(                    // net452
                                    AppDomain.CurrentDomain.BaseDirectory // Debug
                                    )))));

            string testAssembly = Path.Combine(solutionDir, "SW2URDF\\bin\\x64\\Debug\\SW2URDF.dll");
            string typeName     = null;

            using (var runner = AssemblyRunner.WithAppDomain(testAssembly))
            {
                if (null != args && args.Length > 0)
                {
                    TestNameFilter         = args[0];
                    runner.TestCaseFilter += FilterByClass;
                }
                runner.OnDiscoveryComplete = OnDiscoveryComplete;
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestSkipped       = OnTestSkipped;

                Console.WriteLine("Discovering...");
                runner.Start(typeName);

                finished.WaitOne();
                finished.Dispose();
                return(result);
            }
        }
Пример #3
0
        public async Task <TestSuiteResult> RunTestsAsync(string dllPath)
        {
            _executionTime = 0;
            _finished      = new ManualResetEvent(false);
            _results       = new List <TestResult>();

            using (var runner = AssemblyRunner.WithAppDomain(dllPath, shadowCopy: false))
            {
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestPassed        = OnTestPassed;
                await Task.Run(() => RunTests(runner));

                _finished.WaitOne();
                _finished.Dispose();

                return(new TestSuiteResult
                {
                    Name = Path.GetFileName(dllPath),
                    TestResults = _results,
                    ExecutionTime = TimeSpan.FromSeconds((int)_executionTime),
                    IsSuccess = _results.All(r => r.IsSuccess)
                });
            }
        }
Пример #4
0
        public bool RunAllTestsInTypeUsingXunit(Type typeToRunTestsFrom)
        {
            new { typeToRunTestsFrom }.Must().NotBeNull();
            var typeNameToRunTestsFrom = typeToRunTestsFrom.FullName;

            var testAssemblyPath = typeToRunTestsFrom.Assembly.GetCodeBaseAsPathInsteadOfUri();

            using (var runner = AssemblyRunner.WithAppDomain(testAssemblyPath))
            {
                runner.OnDiscoveryComplete = this.OnDiscoveryComplete;
                runner.OnTestOutput        = this.OnTestOutput;
                runner.OnTestPassed        = this.OnTestPassed;
                runner.OnTestFailed        = this.OnTestFailed;
                runner.OnTestSkipped       = this.OnTestSkipped;
                runner.OnExecutionComplete = this.OnExecutionComplete;

                lock (this.announcementLock)
                {
                    this.announcer(" * Discovering tests in type.");
                }

                runner.Start(typeNameToRunTestsFrom);

                this.finished.WaitOne();
                this.finished.Dispose();

                return(!this.seenFailures);
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            if (args.Length == 0 || args.Length > 2)
            {
                Console.WriteLine("usage: TestRunner <assembly> [typeName]");
            }
            //var testAssembly = args[0];
            var testAssembly = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            var typeName     = args.Length == 2 ? args[1] : null;

            using (var runner = AssemblyRunner.WithAppDomain(testAssembly))
            {
                runner.OnDiscoveryComplete = OnDiscoveryComplete;
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestSkipped       = OnTestSkipped;
                runner.OnTestFinished      = OnTestFinished;
                runner.OnTestPassed        = OnTestPassed;
                Console.WriteLine("Discovering...");
                runner.Start(typeName);
                finished.WaitOne();
                finished.Dispose();
                Console.WriteLine(result);
            }
        }
Пример #6
0
        protected override TestExecutionResults ExecuteImpl(string testModule, IEnumerable <IMemberDefinition> testsToRun, string[] args)
        {
            if (!testsToRun.Any())
            {
                // discovery cannot be done
                // When running with empty list of tests XUnit hangs
                return(new TestExecutionResults());
            }

            executedTests.Clear();

            this.testsToRun   = testsToRun;
            executionCanceled = false;
            result            = new TestExecutionResults();

            runner = AssemblyRunner.WithAppDomain(testModule);
            logger.Debug($"Running XUnit executor in App domain: {AppDomain.CurrentDomain.FriendlyName}");

            runner.TestCaseFilter       = TestCaseFilterHandler;
            runner.OnExecutionComplete  = ExecutionCompleteHandler;
            runner.OnTestFailed         = TestFailedHandler;
            runner.OnTestFinished      += TestFinishedHandler;
            runner.OnDiscoveryComplete += DiscoveryCompleteHandler;
            runner.OnErrorMessage      += ErrorMessageHandler;

            logger.Debug("Starting tests");
            runner.Start(maxParallelThreads: 1);

            finished.WaitOne();
            finished.Dispose();

            while (runner.Status != AssemblyRunnerStatus.Idle && !executionCanceled)
            {
                // spin until runner finishes
            }

            if (executionCanceled)
            {
                try
                {
                    runner.Dispose();
                }
                catch (InvalidOperationException e)
                {
                    // for now ignore this exception
                    // due to XUnit bug of not resetting Status to Idle when cancelling run
                }
            }
            else
            {
                runner.Dispose();
            }

            var temp = result;

            // reset result variable
            result = null;
            return(temp);
        }
Пример #7
0
        static int Main()
        {
            using (var runner = AssemblyRunner.WithAppDomain(typeof(Tests.BaseTests).Assembly.Location))
            {
                runner.OnDiscoveryComplete = OnDiscoveryComplete;
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestSkipped       = OnTestSkipped;

                Console.WriteLine("Discovering...");
                //runner.Start(typeof(Tests.IntTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.StringTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.ObjectTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.UIntTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.DoubleTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.BoolTests).FullName);
                //Finished.WaitOne();

                //Finished.Reset();
                //runner.Start(typeof(Tests.DateTimeTests).FullName);
                //Finished.WaitOne();

                Finished.Reset();
                runner.Start(typeof(Tests.CharTests).FullName);
                Finished.WaitOne();

                Finished.Dispose();

                return(_result);
            }
        }
Пример #8
0
        static void Main(string[] args)
        {
            var assembly = Assembly.LoadFrom("AzureDistributedTesting.dll");

            using (var runner = AssemblyRunner.WithAppDomain(assembly.Location))
            {
                runner.OnDiscoveryComplete = OnDiscoveryComplete;
                runner.OnExecutionComplete = OnExecutionComplete;
                runner.OnTestFailed        = OnTestFailed;
                runner.OnTestSkipped       = OnTestSkipped;
                runner.OnErrorMessage      = OnErrorMessage;
                runner.OnTestPassed        = OnTestPassed;

                Console.WriteLine("Discovering...");

                runner.Start();

                Console.ReadLine();
            }
        }
        public static void Run([QueueTrigger("queue-with-tests", Connection = "storage_Conn")] TestTypeInfo myQueueItem, [Table(tableName: "TestResults", Connection = "storage_Conn")] ICollector <TestResult> outputTable, TraceWriter log)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            ManualResetEvent executionManualResetEvent = new ManualResetEvent(false);
            var resultProxy = new ResultProxy(outputTable, myQueueItem);
            var runner      = AssemblyRunner.WithAppDomain(myQueueItem.DllPath);

            runner.OnTestFailed       += resultProxy.OnTestFailed;
            runner.OnTestPassed       += resultProxy.OnTestPassed;
            runner.OnTestSkipped      += resultProxy.OnTestSkipped;
            runner.OnExecutionComplete = info => { executionManualResetEvent.Set(); };
            runner.OnErrorMessage      = info => { executionManualResetEvent.Set(); };
            runner.Start(myQueueItem.TypeName);

            executionManualResetEvent.WaitOne();
            executionManualResetEvent.Dispose();
            while (runner.Status != AssemblyRunnerStatus.Idle) // because of https://github.com/xunit/xunit/issues/1347
            {
                Thread.Sleep(10);
            }
            runner.Dispose();
        }
Пример #10
0
        public void Start()
        {
            if (this.settingEnv.NewMDFile)
            {
                if (File.Exists(this.settingEnv.MDFile))
                {
                    File.Delete(this.settingEnv.MDFile);
                }
            }
            //
            foreach (String assembly in settingEnv.Assemblies)
            {
                // The next Assembly to test is
                string testAssembly = Path.Combine(settingEnv.Path, assembly);
                if (File.Exists(testAssembly))
                {
                    finished.Reset();
                    // Create lists
                    failed = new List <string>();
                    passed = new List <string>();

                    using (var runner = AssemblyRunner.WithAppDomain(testAssembly))
                    {
                        runner.OnExecutionComplete = OnExecutionComplete;
                        runner.OnTestFailed        = OnTestFailed;
                        runner.OnTestPassed        = OnTestPassed;

                        if (settingEnv.Console)
                        {
                            Console.WriteLine("Running...");
                        }
                        runner.Start();

                        finished.WaitOne();
                        // Now generate Result file
                        this.build_Vagrant(testAssembly);
                        if (settingEnv.Details)
                        {
                            this.generateMD(testAssembly);
                        }
                        // ....
                    }
                }
                else
                {
                    TestData_Vagrant vagrant = new TestData_Vagrant();
                    vagrant.TestAssembly = Path.GetFileName(testAssembly);
                    vagrant.Result       = "File Not Found";
                    //
                    testData_Vagrant.Add(vagrant);
                    //
                    if (settingEnv.Console)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Assembly not Found : {0}", testAssembly);
                        Console.ResetColor();
                    }
                }
            }
            this.generateMD_Vagrant();
            finished.Dispose();
        }