示例#1
0
        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-------------------------");
        }