private void register(string group, string name, string caption, Action testMethod, bool debug, params string[] dependencies) { Dictionary<string, RegisteredTest> groupDict = null; if( !tests.TryGetValue(group, out groupDict) ){ tests[group] = groupDict = new Dictionary<string,RegisteredTest>(); } if (!groupDict.ContainsKey(name)) { groupDict[name] = new RegisteredTest { Group = group, Name = name, Caption = caption, Method = testMethod, Dependencies = dependencies, Debug = debug }; } else { throw new ApplicationException("That test id (group,name) is already regged!"); } }
static void Main(string[] args) { Console.WriteLine("Hello World!"); var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); var tokenSource = new CancellationTokenSource(); void OnCancelKey(object sender, ConsoleCancelEventArgs e) { tokenSource.Cancel(); } Console.CancelKeyPress += OnCancelKey; var container = new UnityContainer(); Register(container); Func <IUnityContainer> containerFactory = ((IUnityContainer)container).CreateChildContainer; try { PageObservableTest(container, tokenSource.Token).Wait(tokenSource.Token); } catch (Exception e) { Console.WriteLine(e); } var tests = new RegisteredTest[] { new RegisteredTest { Name = nameof(PageObservableTest), Test = u => PageObservableTest(u, tokenSource.Token) }, new RegisteredTest { Name = nameof(BroadcastWithoutLossTest), Test = u => BroadcastWithoutLossTest(u, tokenSource.Token) } }; var context = new MyContext(); var passCount = 0; for (var testIndex = 0; testIndex < tests.Length; testIndex++) { var test = tests[testIndex]; Console.WriteLine($"======= Starting test #{testIndex+1} : {test.Name} ======"); bool?passed = null; try { Run(containerFactory, test.Test, context, tokenSource.Token).Wait(tokenSource.Token); passed = true; passCount++; } catch (Exception e) { passed = false; Console.WriteLine(e); } var passMessage = passed == null ? "unknown" : passed.Value ? "passed" : "failed"; Console.WriteLine($"== test #{testIndex+1} : {test.Name} Finished - {passMessage}"); } Console.WriteLine(); Console.WriteLine($"{passCount} passed out of {tests.Length}"); }