Exemple #1
0
        public static bool HasFoundTypeByTcid(string dllFullname, string tcID, out Type type)
        {
            type = null;
            try
            {
                Assembly assembly = Assembly.LoadFrom(dllFullname);
                Type[]   types    = assembly.GetTypes();

                foreach (Type t in types)
                {
                    string target = "_" + tcID;
                    if (IsNumeric(t.Name.Substring(1)))
                    {
                        if (string.Compare(t.Name, target) == 0 && TestCaseDiscover.HasTypeInheritedFromTestBase(t))
                        {
                            type = t;
                            return(true);
                        }
                        else
                        {
                            foreach (Attribute attr in t.GetCustomAttributes(false))
                            {
                                if (attr is ReusableTestAttribute)
                                {
                                    if (((ReusableTestAttribute)attr).ContainsTestCase(Convert.ToInt32(tcID)))
                                    {
                                        type = t;
                                        return(true);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ConsoleLogger.LogError(ex.Message);
                throw ex;
            }
            return(false);
        }
Exemple #2
0
        /// <summary>
        /// TestAgent.exe [PID] [TCID] [TestReportPath]
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            string agentFolder = AppDomain.CurrentDomain.BaseDirectory;

            ConsoleLogger.LogDebug("Agent's Folder:" + agentFolder);
            Environment.SetEnvironmentVariable("TestAgentFolder", agentFolder, EnvironmentVariableTarget.User);

            try
            {
                MSTestShooter executioner = new MSTestShooter();

                MSTestDiscoverer mst = new MSTestDiscoverer();
                string           strMSTestExeFullName    = mst.GetMSTestExeFullName();
                string           strTestCoreFileFullName = Path.Combine(agentFolder, CORE_LIBRARY);

                if (args.Length == 0)//in dev mode
                {
                    string strTestReportFolder = ConfigurationManager.AppSettings["LogFolder"];
                    if (!Directory.Exists(strTestReportFolder))
                    {
                        Directory.CreateDirectory(strTestReportFolder);
                    }
                    string prjsInfo = ProjectInfo.PrintAll();
                    INPUT : Console.Write("Choose project ID... " + prjsInfo + " :");
                    string prjName, prjId = Console.ReadLine().ToString();
                    int    pos = prjsInfo.IndexOf(prjId);
                    if (pos > -1)
                    {
                        int dotpos = prjsInfo.IndexOf('.', pos + 1);
                        prjName = prjsInfo.Substring(dotpos + 1, prjsInfo.IndexOf(" ", pos) - dotpos - 1);
                    }
                    else
                    {
                        ConsoleLogger.LogError("Invalid Project ID [{0}]", prjId);
                        return;
                    }
                    Console.Write("Please input test case ID: ");
                    int    pid, tcId;
                    string input             = Console.ReadLine().ToString();
                    string strReportFullName = string.Empty;
                    if (int.TryParse(prjId, out pid) && int.TryParse(input, out tcId))
                    {
                        strReportFullName = strTestReportFolder + "\\" + prjName + "_TC" + tcId + "_" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + ".trx";

                        ConsoleLogger.LogDebug("Test case {0} is running ...", tcId);

                        if (executioner.CallMsTest(pid, tcId, strMSTestExeFullName, strTestCoreFileFullName, strReportFullName, agentFolder) == 0)
                        {
                            ConsoleLogger.LogInfo("Test Case {0}: PASSED!", tcId);
                        }
                        else
                        {
                            ConsoleLogger.LogError("Test Case {0}: FAILED!", tcId);
                        }
                    }
                    //Run all of the test cases in project 1 which name prefix is "_" under TestScripts
                    else
                    {
                        if (input == string.Empty)
                        {
                            var ids = TestCaseDiscover.GetAllTcidInProject(prjName, agentFolder);
                            ConsoleLogger.LogDebug("{0} test cases will be running.", ids.Length);
                            foreach (int id in ids)
                            {
                                ConsoleLogger.LogDebug("Test case {0} is running ...", id);
                                strReportFullName = strTestReportFolder + "\\" + prjName + "_TC" + id + "_" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + ".trx";
                                var result = executioner.CallMsTest(pid, id, strMSTestExeFullName, strTestCoreFileFullName, strReportFullName, agentFolder);
                                if (result == 0)
                                {
                                    ConsoleLogger.LogInfo("Test Case {0}: PASSED!", id);
                                }
                                else
                                {
                                    ConsoleLogger.LogError("Test Case {0}: FAILED!", id);
                                }
                            }
                        }
                        else
                        {
                            goto INPUT;
                        }
                    }
                    Console.Write("Done!");
                    Console.Read();
                }
                else
                {
                    string strReportFullName = args[2];
                    int    pId, tcId;
                    if (int.TryParse(args[0], out pId) && int.TryParse(args[1], out tcId))
                    {
                        int exitCode = executioner.CallMsTest(pId, tcId, strMSTestExeFullName, strTestCoreFileFullName, strReportFullName, agentFolder);
                        Environment.Exit(exitCode);
                    }
                    else
                    {
                        Console.WriteLine("Invalid Project Id and/or Test case ID.");
                        Environment.Exit(ExitCode.TCInvalid);
                    }
                }
            }
            catch
            {
            }
        }