public static void Main(String[] args) { RegisterTests(); if (args[0].Equals("-v")) { verbose = true; Console.Out.Write("Initiating Test Suites...\n\n"); } for (int s = 0; s < Suites.Count; s++) { int passed = 0; Suite suite = Suites[s]; if (verbose) { Console.Out.Write(suite.Name + ": starting...\n"); Console.Out.Flush(); } try { suite.Setup(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.Out.Write("ERROR: Setup Failed, Reason: " + ex.Message + "\n\n"); Console.ForegroundColor = ConsoleColor.Gray; continue; } for (int i = 0; i < suite.Tests.Count; i++) { if (verbose) { Console.Out.Write(" " + suite.Tests[i].Name + " "); } Console.Out.Flush(); try { suite.Tests[i].Function(); passed++; ShowPass(); } catch (Success) { passed++; ShowPass(); } catch (Failure f) { ShowFail(f.info); } catch (Exception ex) { ShowFail(ex.Message); continue; } Console.Out.Flush(); } try { suite.Teardown(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.Out.Write("ERROR: Teardown Failed, Reason: " + ex.Message + "\n\n"); Console.ForegroundColor = ConsoleColor.Gray; continue; } Console.Out.Write(suite.Name + " finished: " + passed + "/" + suite.Tests.Count + " passed\n\n"); } Console.Out.Write("\nAll testing complete [Press Enter]\n"); Console.In.ReadLine(); }