예제 #1
0
        public static int Start()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            Console.WriteLine("Discovering Unit Tests...");
            var unitTests = DiscoverUnitTests();

            Console.WriteLine("Found Tests: " + unitTests.Count.ToString());
            var elapsedDiscovery = stopwatch.ElapsedMilliseconds;

            Console.WriteLine("Elapsed: " + (elapsedDiscovery / 1000.0).ToString("F2") + " secs");
            Console.WriteLine();

            Console.WriteLine("Starting Unit Test Engine...");
            var unitTestEngine = new UnitTestEngine();
            var elapsedCompile = stopwatch.ElapsedMilliseconds - elapsedDiscovery;

            Console.WriteLine("Elapsed: " + (elapsedCompile / 1000.0).ToString("F2") + " secs");
            Console.WriteLine();

            Console.WriteLine("Preparing Unit Tests...");
            PrepareUnitTest(unitTests, unitTestEngine.TypeSystem, unitTestEngine.Linker);
            var elapsedPreparing = stopwatch.ElapsedMilliseconds - elapsedDiscovery - elapsedCompile;

            Console.WriteLine("Elapsed: " + (elapsedPreparing / 1000.0).ToString("F2") + " secs");
            Console.WriteLine();

            Console.WriteLine("Executing Unit Tests...");
            Execute(unitTests, unitTestEngine);
            var elapsedExecuting = stopwatch.ElapsedMilliseconds - elapsedDiscovery - elapsedCompile - elapsedPreparing;

            Console.WriteLine("Elapsed: " + (elapsedExecuting / 1000.0).ToString("F2") + " secs");
            Console.WriteLine();

            stopwatch.Stop();

            Console.WriteLine("Total Elapsed: " + (stopwatch.ElapsedMilliseconds / 1000.0) + " secs");

            unitTestEngine.Terminate();

            int failures = 0;
            int passed   = 0;
            int skipped  = 0;

            foreach (var unitTest in unitTests)
            {
                if (unitTest.Status == UnitTestStatus.Passed)
                {
                    passed++;
                    continue;
                }

                if (unitTest.Status == UnitTestStatus.Skipped)
                {
                    skipped++;
                    continue;
                }

                failures++;
                Console.WriteLine(OutputUnitTestResult(unitTest));
            }

            Console.WriteLine();
            Console.WriteLine("Unit Test Results:");
            Console.WriteLine($"   Passed:   {passed}");
            Console.WriteLine($"   Skipped:  {skipped}");
            Console.WriteLine($"   Failures: {failures}");
            Console.WriteLine($"   Total:    {passed + skipped + failures}");
            Console.WriteLine();

            if (failures == 0)
            {
                Console.WriteLine("All unit tests passed successfully!");
            }
            else
            {
                Console.WriteLine("Failures occurred in the unit tests!");
            }

            return(failures);
        }
예제 #2
0
        private static void Execute(List <UnitTest> unitTests, UnitTestEngine unitTestEngine)
        {
            unitTestEngine.QueueUnitTests(unitTests);

            unitTestEngine.WaitUntilComplete();
        }