2

TestPlan の TFS API を使用して特定の TestSuite を取得しようとしています。

TestSuite は TestSuite 階層内のどこにでも存在する可能性があるため、もちろん再帰関数を作成できます。しかし、もっと効率的なものが欲しいです。

不足しているメソッド、または作成できるクエリはありますか?

4

1 に答える 1

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

そうでない場合は、おそらくここに示されているものと同様の解決策(S.Raitenの投稿です)を選択する必要があります。ここでは、再帰が明らかになります。aへのアクセスtestPlanIdが想定されています。

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);
                }
            }
        }
    }
}
于 2012-04-24T14:44:36.730 に答える