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); }
private static void Execute(List <UnitTest> unitTests, UnitTestEngine unitTestEngine) { unitTestEngine.QueueUnitTests(unitTests); unitTestEngine.WaitUntilComplete(); }