/// <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; }
/// <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); } } } } }
/// <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; }
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)); }
/// <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> /// 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); } } } } }
/// <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"); }