예제 #1
0
        /// <summary>
        /// The method initializes child test suites.
        /// </summary>
        public void InitializeChildSuites()
        {
            var list = new List <ITfsTestSuite>();
            ITestSuiteCollection childCollection = null;

            if (OriginalStaticTestSuite != null)
            {
                childCollection = OriginalStaticTestSuite.SubSuites;
            }
            if (childCollection != null)
            {
                foreach (var childTestSuite in childCollection)
                {
                    if (childTestSuite is IStaticTestSuite)
                    {
                        list.Add(new TfsTestSuite(childTestSuite as IStaticTestSuite, AssociatedTestPlan));
                    }
                    if (childTestSuite is IDynamicTestSuite)
                    {
                        list.Add(new TfsTestSuite(childTestSuite as IDynamicTestSuite, AssociatedTestPlan));
                    }
                    if (childTestSuite is IRequirementTestSuite)
                    {
                        list.Add(new TfsTestSuite(childTestSuite as IRequirementTestSuite, AssociatedTestPlan));
                    }
                }
            }
            list.Sort((x, y) => string.Compare(x.Title, y.Title));
            TestSuites = list;
        }
예제 #2
0
        /// <summary>
        /// Returns all suites in current suite collection
        /// </summary>
        /// <param name="suites">The suites.</param>
        /// <returns>list of all suites</returns>
        private static List <ITestSuiteBase> GetAllTestSuites(ITestSuiteCollection suites)
        {
            List <ITestSuiteBase> testSuites = new List <ITestSuiteBase>();

            foreach (ITestSuiteBase currentSuite in suites)
            {
                if (currentSuite != null)
                {
                    currentSuite.Refresh();
                    if (!testSuites.Contains(currentSuite))
                    {
                        testSuites.Add(currentSuite);
                    }

                    if (currentSuite is IStaticTestSuite)
                    {
                        IStaticTestSuite suite1 = currentSuite as IStaticTestSuite;
                        if (suite1 != null && (suite1.SubSuites.Count > 0))
                        {
                            testSuites.AddRange(GetAllTestSuites(suite1.SubSuites));
                        }
                    }
                }
            }

            return(testSuites);
        }
예제 #3
0
 /// <summary>
 /// Removes the test case internal.
 /// </summary>
 /// <param name="testCaseToRemove">The test case to be removed.</param>
 /// <param name="suitesToSearch">The suites which will be searched.</param>
 private static void RemoveTestCaseInternal(ITestCase testCaseToRemove, ITestSuiteCollection suitesToSearch)
 {
     foreach (ITestSuiteBase currentSuite in suitesToSearch)
     {
         if (currentSuite != null)
         {
             if (currentSuite is IRequirementTestSuite)
             {
                 IRequirementTestSuite suite = currentSuite as IRequirementTestSuite;
                 if (suite.TestCases.Where(x => x.Id.Equals(testCaseToRemove.Id)).ToList().Count == 0)
                 {
                     suite.TestCases.RemoveEntries(new List <ITestSuiteEntry>()
                     {
                         testCaseToRemove.TestSuiteEntry
                     });
                 }
             }
             else if (currentSuite is IStaticTestSuite)
             {
                 foreach (var currentTestCase in currentSuite.TestCases)
                 {
                     if (currentTestCase.Id.Equals(testCaseToRemove.Id))
                     {
                         ((IStaticTestSuite)currentSuite).Entries.Remove(testCaseToRemove);
                     }
                 }
                 IStaticTestSuite suite1 = currentSuite as IStaticTestSuite;
                 if (suite1 != null && (suite1.SubSuites.Count > 0))
                 {
                     RemoveTestCaseInternal(testCaseToRemove, suite1.SubSuites);
                 }
             }
         }
     }
 }
        /// <summary>
        /// Gets all suites.
        /// </summary>
        /// <param name="subSuitesCore">The sub suites core.</param>
        /// <returns>list of all suites</returns>
        public static ObservableCollection<Suite> GetAllSuites(ITestSuiteCollection subSuitesCore)
        {
            ObservableCollection<Suite> subSuites = new ObservableCollection<Suite>();
            foreach (ITestSuiteBase currentSuite in subSuitesCore)
            {
                if (currentSuite != null)
                {
                    currentSuite.Refresh();
                    ObservableCollection<Suite> childred = null;
                    if (currentSuite is IStaticTestSuite)
                    {
                        IStaticTestSuite suite = currentSuite as IStaticTestSuite;
                        if (suite.SubSuites != null && suite.SubSuites.Count > 0)
                        {
                            childred = GetAllSuites(suite.SubSuites);
                        }
                    }
                    Suite newSuite = new Suite(currentSuite.Title, currentSuite.Id, childred);

                    // Cannot add suites to requirements based suite
                    if (currentSuite is IRequirementTestSuite)
                    {
                        newSuite.IsPasteEnabled = false;
                        newSuite.IsSuiteAddEnabled = false;
                        newSuite.IsAddSuiteAllowed = false;
                        newSuite.IsPasteAllowed = false;
                    }
                    SetParentToAllChildrenSuites(childred, newSuite);
                 
                    subSuites.Add(newSuite);
                }
            }

            return subSuites;
        }
예제 #5
0
        internal static int Add_TestSuites(
            Excel.XlLocation insertAt,
            Options_AZDO_TFS options,
            ITestManagementTeamProject testManagementTeamProject)
        {
            Int64 startTicks = Log.APPLICATION("Enter", Common.LOG_CATEGORY);

            int itemCount = 0;

            //string query = String.Format(
            //    "SELECT [System.Id], [System.Title]"
            //    + " FROM WorkItems"
            //    + " WHERE [System.WorkItemType] = 'Test Suite'"
            //    + " AND [Team Project] = '{0}'", testManagementTeamProject.TeamProjectName);

            string query = String.Format(
                "SELECT *"
                + " FROM TestSuite"
                );

            ITestSuiteCollection testSuites = testManagementTeamProject.TestSuites.Query(query);
            int totalItems = testSuites.Count;

            XlHlp.DisplayInWatchWindow($"Processing ({ totalItems } testSuites");

            foreach (var testSuite in testSuites)
            {
                insertAt.ClearOffsets();

                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testManagementTeamProject.TeamProjectName}");

                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Id}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Title}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Description}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.State}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.LastUpdated}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.LastUpdatedByName}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.TestCaseCount}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.TestSuiteType}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.AllTestCases.Count}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Revision}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Plan.Id}");
                XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), $"{testSuite.Plan.Name}");

                insertAt.IncrementRows();
                itemCount++;

                AZDOHelper.ProcessItemDelay(options);
                AZDOHelper.DisplayLoopUpdates(startTicks, options, totalItems, itemCount);
            }

            Log.APPLICATION("Exit", Common.LOG_CATEGORY, startTicks);

            return(itemCount);
        }
        public static IOrderedEnumerable <TestSuite> getTestSuites(TestPlan testPlan)
        {
            ITestSuiteCollection subSuites = testPlan.TFSTestPlan.RootSuite.SubSuites;

            TestSuite[] testSuites = new TestSuite[subSuites.Count];

            for (int i = 0; i < subSuites.Count; i++)
            {
                testSuites[i] = new TestSuite(subSuites[i]);
            }

            return(testSuites.OrderBy(ts => ts.TFSTestSuiteBase.Title));
        }
        /// <summary>
        /// Gets all test cases from all test suites.d
        /// </summary>
        /// <param name="testPlan">The test plan.</param>
        /// <param name="suiteEntries">The test suite collection.</param>
        /// <param name="alreadyCheckedSuitesIds">The already checked suites ids.</param>
        /// <returns>
        /// list with all test cases
        /// </returns>
        public static List<TestCase> GetAllTestCasesFromSuiteCollection(ITestPlan testPlan, ITestSuiteCollection suiteEntries, List<int> alreadyCheckedSuitesIds = null)
        {
            if (alreadyCheckedSuitesIds == null)
            {
                alreadyCheckedSuitesIds = new List<int>();
            }
            List<TestCase> testCases = new List<TestCase>();

            foreach (ITestSuiteBase currentSuite in suiteEntries)
            {
                if (currentSuite != null && !alreadyCheckedSuitesIds.Contains(currentSuite.Id))
                {
                    alreadyCheckedSuitesIds.Add(currentSuite.Id);
                    currentSuite.Refresh();
                    foreach (var currentTestCase in currentSuite.TestCases)
                    {
                        TestCase testCaseToAdd = new TestCase(currentTestCase.TestCase, currentSuite, testPlan);
                        if (!testCases.Contains(testCaseToAdd))
                        {
                            testCases.Add(testCaseToAdd);
                        }
                    }

                    if (currentSuite.TestSuiteType == TestSuiteType.StaticTestSuite)
                    {
                        IStaticTestSuite staticTestSuite = currentSuite as IStaticTestSuite;
                        if (staticTestSuite != null && (staticTestSuite.SubSuites.Count > 0))
                        {
                            List<TestCase> testCasesInternal = GetAllTestCasesFromSuiteCollection(testPlan, staticTestSuite.SubSuites, alreadyCheckedSuitesIds);
                            foreach (var currentTestCase in testCasesInternal)
                            {
                                if (!testCases.Contains(currentTestCase))
                                {
                                    testCases.Add(currentTestCase);
                                }
                            }
                        }
                    }
                }
            }
            return testCases;
        }
        public static SortedDictionary <string, string> GetAllSuites(string planId)
        {
            SortedDictionary <string, string> lsSuitesQuery = new SortedDictionary <string, string>();

            try
            {
                ITestSuiteHelper     iTSuiteHelp = proj.TestSuites;
                string               qText       = string.Format("Select * from TestSuite where PlanId='{0}'", planId);
                ITestSuiteCollection iTSuiteColl = iTSuiteHelp.Query(qText);
                foreach (ITestSuiteBase iTSB in iTSuiteColl)
                {
                    lsSuitesQuery.Add(iTSB.Id.ToString(), iTSB.Title);
                }
            }
            catch (Exception ex)
            {
                lsSuitesQuery.Add("-1", "Error. Load Project,pland and config");
            }
            return(lsSuitesQuery);
        }
        public static IOrderedEnumerable <TestSuite> getTestSuites(TestSuite testSuite)
        {
            IStaticTestSuite staticTestSuite = testSuite.TFSTestSuiteBase as IStaticTestSuite;

            if (staticTestSuite == null)
            {
                return(null);
            }

            ITestSuiteCollection subSuites = ((IStaticTestSuite)testSuite.TFSTestSuiteBase).SubSuites;

            TestSuite[] testSuites = new TestSuite[subSuites.Count];

            for (int i = 0; i < subSuites.Count; i++)
            {
                testSuites[i] = new TestSuite(subSuites[i]);
            }

            return(testSuites.OrderBy(ts => ts.TFSTestSuiteBase.Title));
        }
예제 #10
0
        /// <summary>
        /// Gets all suites.
        /// </summary>
        /// <param name="subSuitesCore">The sub suites core.</param>
        /// <returns>list of all suites</returns>
        public static ObservableCollection <Suite> GetAllSuites(ITestSuiteCollection subSuitesCore)
        {
            ObservableCollection <Suite> subSuites = new ObservableCollection <Suite>();

            foreach (ITestSuiteBase currentSuite in subSuitesCore)
            {
                if (currentSuite != null)
                {
                    currentSuite.Refresh();
                    ObservableCollection <Suite> childred = null;
                    if (currentSuite is IStaticTestSuite)
                    {
                        IStaticTestSuite suite = currentSuite as IStaticTestSuite;
                        if (suite.SubSuites != null && suite.SubSuites.Count > 0)
                        {
                            childred = GetAllSuites(suite.SubSuites);
                        }
                    }
                    Suite newSuite = new Suite(currentSuite.Title, currentSuite.Id, childred);

                    // Cannot add suites to requirements based suite
                    if (currentSuite is IRequirementTestSuite)
                    {
                        newSuite.IsPasteEnabled    = false;
                        newSuite.IsSuiteAddEnabled = false;
                        newSuite.IsAddSuiteAllowed = false;
                        newSuite.IsPasteAllowed    = false;
                    }
                    SetParentToAllChildrenSuites(childred, newSuite);

                    subSuites.Add(newSuite);
                }
            }

            return(subSuites);
        }
        /// <summary>
        /// Migrates the suites from source to destination internal.
        /// </summary>
        /// <param name="subSuitesCore">The sub suites core.</param>
        /// <param name="parentId">The parent id.</param>
        private void MigrateSuitesFromSourceToDestinationInternal(ITestSuiteCollection subSuitesCore, int parentId)
        {
            if (!string.IsNullOrEmpty(this.MigrationSuitesRetryJsonPath) && File.Exists(this.MigrationSuitesRetryJsonPath))
            {
                this.suitesMigrationLogManager = new MigrationLogManager(this.MigrationSuitesRetryJsonPath);
                this.suitesMigrationLogManager.LoadCollectionFromExistingFile();
                this.suitesMapping = this.suitesMigrationLogManager.GetProssedItemsMappings();
            }
            else
            {
                this.suitesMigrationLogManager = new MigrationLogManager("suites", this.DefaultJsonFolder);
            }

            if (subSuitesCore == null || subSuitesCore.Count == 0)
            {
                return;
            }
            foreach (ITestSuiteBase currentSuite in subSuitesCore)
            {
                if (this.executionCancellationToken.IsCancellationRequested)
                {
                    break;
                }
                // If it's already processed skip it
                if (this.suitesMigrationLogManager.MigrationEntries.Count(e => e.SourceId.Equals(currentSuite.Id) && e.IsProcessed.Equals(true)) > 0)
                {
                    continue;
                }

                string infoMessage = String.Empty;
                try
                {
                    infoMessage = String.Format("Start Migrating Suite with Source Id= {0}", currentSuite.Id);
                    log.Info(infoMessage);
                    this.ProgressConcurrentQueue.Enqueue(infoMessage);
                    int newSuiteId = 0;
                    if (currentSuite != null)
                    {
                        currentSuite.Refresh();
                        //Don't migrate the suite if its suite is in the exclusion list
                        if (this.ObservableSuitesToBeSkipped.Count(t => t != null && t.NewText != null && t.NewText.Equals(currentSuite.Title)) > 0)
                        {
                            continue;
                        }
                        bool canBeAddedNewSuite;
                        newSuiteId = TestSuiteManager.AddChildSuite(this.destinationTeamProject, this.destinationPreferences.TestPlan, parentId, currentSuite.Title, out canBeAddedNewSuite);
                        if (newSuiteId != 0)
                        {
                            this.suitesMapping.Add(currentSuite.Id, newSuiteId);
                        }

                        if (!(currentSuite is IRequirementTestSuite))
                        {
                            IStaticTestSuite suite = currentSuite as IStaticTestSuite;
                            this.MigrateSuitesFromSourceToDestinationInternal(suite.SubSuites, newSuiteId);
                        }
                    }

                    this.suitesMigrationLogManager.Log(currentSuite.Id, newSuiteId, true);
                    infoMessage = String.Format("Suite Migrated SUCCESSFULLY: Source Id= {0}, Destination Id= {1}", currentSuite.Id, newSuiteId);
                    log.Info(infoMessage);
                    this.ProgressConcurrentQueue.Enqueue(infoMessage);
                }
                catch (Exception ex)
                {
                    this.suitesMigrationLogManager.Log(currentSuite.Id, -1, false, ex.Message);
                    log.Error(ex);
                    this.ProgressConcurrentQueue.Enqueue(ex.Message);
                }
                finally
                {
                    this.suitesMigrationLogManager.Save();
                    this.MigrationSuitesRetryJsonPath = this.suitesMigrationLogManager.FullResultFilePath;
                }
            }
            this.IsSuitesMigrationFinished = true;
        }
        void GetSuiteEntries(ITestSuiteCollection suite_entries, TreeViewItem root)
        {
            foreach (ITestSuiteBase suite in suite_entries)
            {

               if(suite!=null)
               {
                TreeViewItem suite_tree = new TreeViewItem();
                suite_tree.Header = suite.Title.ToString() + " <ID: " + suite.Id.ToString() + " >";
                root.Items.Add(suite_tree);

                if (suite.TestSuiteType == TestSuiteType.StaticTestSuite)
                {
                    IStaticTestSuite suite1 = suite as IStaticTestSuite;
                   if(suite1!=null && (suite1.SubSuites.Count > 0))
                   {

                       GetSuiteEntries(suite1.SubSuites, suite_tree);
                   }
               }
              }

            }
        }
        /// <summary>
        /// Gets all test cases from all test suites.d
        /// </summary>
        /// <param name="testPlan">The test plan.</param>
        /// <param name="suiteEntries">The test suite collection.</param>
        /// <param name="alreadyCheckedSuitesIds">The already checked suites ids.</param>
        /// <returns>
        /// list with all test cases
        /// </returns>
        public static List <TestCase> GetAllTestCasesFromSuiteCollection(ITestPlan testPlan, ITestSuiteCollection suiteEntries, List <int> alreadyCheckedSuitesIds = null)
        {
            if (alreadyCheckedSuitesIds == null)
            {
                alreadyCheckedSuitesIds = new List <int>();
            }
            List <TestCase> testCases = new List <TestCase>();

            foreach (ITestSuiteBase currentSuite in suiteEntries)
            {
                if (currentSuite != null && !alreadyCheckedSuitesIds.Contains(currentSuite.Id))
                {
                    alreadyCheckedSuitesIds.Add(currentSuite.Id);
                    currentSuite.Refresh();
                    foreach (var currentTestCase in currentSuite.TestCases)
                    {
                        TestCase testCaseToAdd = new TestCase(currentTestCase.TestCase, currentSuite, testPlan);
                        if (!testCases.Contains(testCaseToAdd))
                        {
                            testCases.Add(testCaseToAdd);
                        }
                    }

                    if (currentSuite.TestSuiteType == TestSuiteType.StaticTestSuite)
                    {
                        IStaticTestSuite staticTestSuite = currentSuite as IStaticTestSuite;
                        if (staticTestSuite != null && (staticTestSuite.SubSuites.Count > 0))
                        {
                            List <TestCase> testCasesInternal = GetAllTestCasesFromSuiteCollection(testPlan, staticTestSuite.SubSuites, alreadyCheckedSuitesIds);
                            foreach (var currentTestCase in testCasesInternal)
                            {
                                if (!testCases.Contains(currentTestCase))
                                {
                                    testCases.Add(currentTestCase);
                                }
                            }
                        }
                    }
                }
            }
            return(testCases);
        }
        /// <summary>
        /// Migrates the suites from source to destination internal.
        /// </summary>
        /// <param name="subSuitesCore">The sub suites core.</param>
        /// <param name="parentId">The parent id.</param>
        private void MigrateSuitesFromSourceToDestinationInternal(ITestSuiteCollection subSuitesCore, int parentId)
        {
            if (!string.IsNullOrEmpty(this.MigrationSuitesRetryJsonPath) && File.Exists(this.MigrationSuitesRetryJsonPath))
            {
                this.suitesMigrationLogManager = new MigrationLogManager(this.MigrationSuitesRetryJsonPath);
                this.suitesMigrationLogManager.LoadCollectionFromExistingFile();
                this.suitesMapping = this.suitesMigrationLogManager.GetProssedItemsMappings();
            }
            else
            {
                this.suitesMigrationLogManager = new MigrationLogManager("suites", this.DefaultJsonFolder);
            }

            if (subSuitesCore == null || subSuitesCore.Count == 0)
            {
                return;
            }
            foreach (ITestSuiteBase currentSuite in subSuitesCore)
            {
                if (this.executionCancellationToken.IsCancellationRequested)
                {
                    break;
                }
                // If it's already processed skip it
                if (this.suitesMigrationLogManager.MigrationEntries.Count(e => e.SourceId.Equals(currentSuite.Id) && e.IsProcessed.Equals(true)) > 0)
                {
                    continue;
                }

                string infoMessage = String.Empty;
                try
                {
                    infoMessage = String.Format("Start Migrating Suite with Source Id= {0}", currentSuite.Id);
                    log.Info(infoMessage);
                    this.ProgressConcurrentQueue.Enqueue(infoMessage);
                    int newSuiteId = 0;
                    if (currentSuite != null)
                    {
                        currentSuite.Refresh();
                        //Don't migrate the suite if its suite is in the exclusion list
                        if (this.ObservableSuitesToBeSkipped.Count(t => t != null && t.NewText != null && t.NewText.Equals(currentSuite.Title)) > 0)
                        {
                            continue;
                        }
                        bool canBeAddedNewSuite;
                        newSuiteId = TestSuiteManager.AddChildSuite(this.destinationTeamProject, this.destinationPreferences.TestPlan, parentId, currentSuite.Title, out canBeAddedNewSuite);
                        if (newSuiteId != 0)
                        {
                            this.suitesMapping.Add(currentSuite.Id, newSuiteId);
                        }

                        if (!(currentSuite is IRequirementTestSuite))
                        {
                            IStaticTestSuite suite = currentSuite as IStaticTestSuite;
                            this.MigrateSuitesFromSourceToDestinationInternal(suite.SubSuites, newSuiteId);
                        }
                    }

                    this.suitesMigrationLogManager.Log(currentSuite.Id, newSuiteId, true);
                    infoMessage = String.Format("Suite Migrated SUCCESSFULLY: Source Id= {0}, Destination Id= {1}", currentSuite.Id, newSuiteId);
                    log.Info(infoMessage);
                    this.ProgressConcurrentQueue.Enqueue(infoMessage);
                }
                catch (Exception ex)
                {
                    this.suitesMigrationLogManager.Log(currentSuite.Id, -1, false, ex.Message);
                    log.Error(ex);
                    this.ProgressConcurrentQueue.Enqueue(ex.Message);
                }
                finally
                {
                    this.suitesMigrationLogManager.Save();
                    this.MigrationSuitesRetryJsonPath = this.suitesMigrationLogManager.FullResultFilePath;
                }
            }
            this.IsSuitesMigrationFinished = true;
        }
예제 #15
0
        /// <summary>
        /// This method is used to initiate execution in test manager, create test run and results and set required parameters
        /// </summary>
        /// <returns></returns>
        public bool InitExecution()
        {
            //Create a connection to tfs project
            ITestManagementTeamProject tfsProject = null;

            tfsProject = GetProject(ProjectUrl, ProjectName);

            if (tfsProject == null)
            {
                throw new Exception("Unabled to connect to test project: " + ProjectName);
            }
            //Retrieve test plan details
            ITestPlanCollection testPlans = tfsProject.TestPlans.Query("select * from TestPlan where PlanName ='" +
                                                                       TestPlanName + "'");

            if (testPlans.Count == 0)
            {
                throw new Exception("Unabled to locate test plan: " + TestPlanName + " in Test Manager.");
            }

            ITestPlan tfsTestPlan = testPlans.First();

            //Retrieve test suite details
            ITestSuiteCollection testSuites = null;

            //Optionally, test suite id of test manager can be passed as an command line arguments
            //This helps when same test case has been added to multiple test suites
            if (TestSuiteId.ToLower().Equals(string.Empty) ||
                TestSuiteId.ToLower().Equals(string.Empty) ||
                TestSuiteId.ToLower().Equals("testsuiteid", StringComparison.OrdinalIgnoreCase))
            {
                testSuites = tfsProject.TestSuites.Query("Select * from TestSuite where Title='" +
                                                         TestSuiteName + "' and PlanID='" + tfsTestPlan.Id + "'");
            }
            else
            {
                testSuites = tfsProject.TestSuites.Query("Select * from TestSuite where Id='" +
                                                         TestSuiteId + "' and PlanID='" + tfsTestPlan.Id + "'");
            }


            IStaticTestSuite tfsTestSuite = testSuites.Cast <IStaticTestSuite>().FirstOrDefault(testSuite => testSuite.Title.ToLower().Equals(TestSuiteName.ToLower()) || testSuite.Id.ToString().Equals(TestSuiteId));

            if (tfsTestSuite == null)
            {
                throw new Exception("Unabled to locate test suite: " + TestSuiteName + " in Test Manager Test Plan: " + TestPlanName);
            }

            //Get handle to a specific test case in the test suite
            ITestCase tfsTestCase = tfsTestSuite.AllTestCases.FirstOrDefault(testcase => testcase.Id.Equals(TestCaseId));

            if (tfsTestCase == null)
            {
                throw new Exception("Unabled to locate test case id: " + TestCaseId + " in Test Manager");
            }

            //Create a test run
            ITestPoint tfsTestPoint = CreateTestPoints(tfsTestPlan, tfsTestSuite, tfsTestCase);
            ITestRun   tfsTestRun   = CreateTestRun(tfsProject, tfsTestPlan, tfsTestPoint);

            tfsTestRun.Refresh();

            //Suprisingly, most recently created test results should be available in last, but test manager returns it at first position
            //Find test results that were create by the test run
            ITestCaseResultCollection tfsTestCaseResults = tfsProject.TestResults.ByTestId(tfsTestCase.Id);
            ITestCaseResult           tfsTestResult      = tfsTestCaseResults.Last(); //Default assignment

            foreach (ITestCaseResult testResult in tfsTestCaseResults)
            {
                if (testResult.DateCreated.CompareTo(tfsTestRun.DateCreated) == 1)
                {
                    tfsTestResult = testResult;
                    break;
                }
            }

            //Set test run and result id to property variable for usage while uploading results
            Property.RcTestRunId    = tfsTestRun.Id;
            Property.RcTestResultId = tfsTestResult.TestResultId;

            //Set status of test case execution

            //Set other details on test execution
            tfsTestResult.ComputerName = Property.RcMachineId;
            tfsTestResult.DateStarted  = DateTime.Now;
            tfsTestResult.State        = TestResultState.InProgress;
            tfsTestResult.Save();
            return(true);
        }
        /// <summary>
        /// Returns all suites in current suite collection
        /// </summary>
        /// <param name="suites">The suites.</param>
        /// <returns>list of all suites</returns>
        private static List<ITestSuiteBase> GetAllTestSuites(ITestSuiteCollection suites)
        {
            List<ITestSuiteBase> testSuites = new List<ITestSuiteBase>();
            foreach (ITestSuiteBase currentSuite in suites)
            {
                if (currentSuite != null)
                {
                    currentSuite.Refresh();
                    if (!testSuites.Contains(currentSuite))
                    {
                        testSuites.Add(currentSuite);
                    }

                    if (currentSuite is IStaticTestSuite)
                    {
                        IStaticTestSuite suite1 = currentSuite as IStaticTestSuite;
                        if (suite1 != null && (suite1.SubSuites.Count > 0))
                        {
                            testSuites.AddRange(GetAllTestSuites(suite1.SubSuites));
                        }
                    }
                }
            }

            return testSuites;
        }
 /// <summary>
 /// Removes the test case internal.
 /// </summary>
 /// <param name="testCaseToRemove">The test case to be removed.</param>
 /// <param name="suitesToSearch">The suites which will be searched.</param>
 private static void RemoveTestCaseInternal(ITestCase testCaseToRemove, ITestSuiteCollection suitesToSearch)
 {
     foreach (ITestSuiteBase currentSuite in suitesToSearch)
     {
         if (currentSuite != null)
         {
             if (currentSuite is IRequirementTestSuite)
             {
                 IRequirementTestSuite suite = currentSuite as IRequirementTestSuite;
                 if (suite.TestCases.Where(x => x.Id.Equals(testCaseToRemove.Id)).ToList().Count == 0)
                 {
                     suite.TestCases.RemoveEntries(new List<ITestSuiteEntry>() { testCaseToRemove.TestSuiteEntry });
                 }
             }
             else if (currentSuite is IStaticTestSuite)
             {
                 foreach (var currentTestCase in currentSuite.TestCases)
                 {
                     if (currentTestCase.Id.Equals(testCaseToRemove.Id))
                     {
                         ((IStaticTestSuite)currentSuite).Entries.Remove(testCaseToRemove);
                     }
                 }
                 IStaticTestSuite suite1 = currentSuite as IStaticTestSuite;
                 if (suite1 != null && (suite1.SubSuites.Count > 0))
                 {
                     RemoveTestCaseInternal(testCaseToRemove, suite1.SubSuites);
                 }
             }
         }
     }
 }
예제 #18
0
 /// <summary>
 ///Initiaze and get the test objects from the test managment.
 /// </summary>
 private static void InitializeTestData()
 {
     testCases  = testManagement.TestCases.Query("SELECT * FROM WorkItems");
     testSuites = testManagement.TestSuites.Query("SELECT * FROM TestSuite");
     testPlans  = testManagement.TestPlans.Query("SELECT * FROM TestPlan");
 }