private static void ExecuteSuite() { logger.Info("=========Start To Execute Suite...========="); logger.Info("Total Case: " + SuiteTree.Count()); int itemIndex = 0; foreach (var item in SuiteTree) { ++itemIndex; ErrorMessage = ""; watch = new Stopwatch(); watch.Start(); StartTime = DateTime.Now.ToString("yyyyMMddHHmmss"); string caseName = item.Data; CaseName = caseName; string modelName = item.Children.First().Data; logger.Info("--[" + itemIndex + @"/" + SuiteTree.Count() + "]" + "Start Case: " + CaseName); foreach (var action in item.Children.First().Children) { try { string actionName = action.Data; logger.Info("----|Start Action: " + actionName); object[] o = new object[] { }; o = action.Children.Select(x => x.Data as object).ToArray(); var pages = Assembly.GetExecutingAssembly().GetTypes() .Where(t => t.Namespace == "MST.Engine.Model." + modelName) .ToList(); var actions = from p in pages from a in Type.GetType(p.FullName). GetMethods(BindingFlags.Public | BindingFlags.Instance) where a.Name == actionName select new { a, p }; if (actions.Count() > 0) { Type t = Type.GetType(actions.First().p.FullName); var instance = Activator.CreateInstance(t); t.InvokeMember(actions.First().a.Name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, instance, o); } else { logger.Error("Could Not Found Action: " + actionName + ", Please Check DataDriver File Or Add The Action On Code"); break; } } catch (Exception e) { EndTime = DateTime.Now.ToString("yyyyMMddHHmmss"); watch.Stop(); ElapsedTime = watch.Elapsed.TotalMinutes; CheckPoint check = new CheckPoint(); ErrorMessage = e.Message; check.CheckResult(); break; } } watch.Stop(); EndTime = DateTime.Now.ToString("yyyyMMddHHmmss"); ElapsedTime = watch.Elapsed.TotalMinutes; } logger.Info("---------------End-------------------------"); }