使用TFS API通过Id获取特定的TestSuite

use*_*500 2 tfs tfs-sdk

我正在尝试使用TFS API为TestPlan获取特定的TestSuite.

TestSuite可以存在于TestSuite层次结构中的任何位置,因此,当然我可以编写递归函数.但是我想要更高效的东西.

有没有我缺少的方法,或者我可以编写的查询?

pan*_*lif 5

如果你已经知道testSuiteId事情很简单.您只需要知道TeamProject的名称teamProjectName:

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;

namespace GetTestSuite
{
    class Program
    {
        static void Main()
        {
           int testSuiteId = 555;
           const string teamProjectName = "myTeamProjectName";

           var tpc =
                TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
                    new Uri("http://tfsURI"));

           var tstService = (ITestManagementService)tpc.GetService(typeof(ITestManagementService));
           var tProject = tstService.GetTeamProject(teamProjectName);

           var myTestSuite = tProject.TestSuites.Find(testSuiteId);            
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,你可能需要寻找类似于这里提出的解决方案(这是S.Raiten的帖子),其中递归确实出现了.testPlanId假设访问a :

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;

namespace GetTestSuite
{
    class Program
    {
        static void Main()
        {
            int testPlanId = 555;
            const string teamProjectName = "myTeamProjectName";

            var tpc =
                TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
                    new Uri("http://tfsURI"));

            var tstService = (ITestManagementService)tpc.GetService(typeof(ITestManagementService));
            var tProject = tstService.GetTeamProject(teamProjectName);

            var myTestPlan = tProject.TestPlans.Find(testPlanId);
            GetPlanSuites(myTestPlan.RootSuite.Entries);                
        }

        public static void GetPlanSuites(ITestSuiteEntryCollection suites)
        {
            foreach (ITestSuiteEntry suiteEntry in suites)
            {
                Console.WriteLine(suiteEntry.Id);
                var suite = suiteEntry.TestSuite as IStaticTestSuite;
                if (suite != null)
                {
                    if (suite.Entries.Count > 0)
                        GetPlanSuites(suite.Entries);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)