如何从TFS服务器过滤已删除的测试用例(WorkItems)?

时间:2015-08-12 10:47:04

标签: c# wpf tfs2013

我创建了一个带有一些SQL查询的C#项目,以便使用API​​从TFS获取数据。众所周知,我们无法永久地从TFS服务器中删除测试用例/工作项。它只是从UI中删除案例,而不是从数据库中删除。那么如何从未删除的案例中过滤已删除的案例呢?

我使用了以下查询:

String query = "SELECT * FROM WorkItems WHERE [Team Project]=" + "'" + projname + "'";

因此,此查询返回projname项目中存在的所有案例,包括已删除的案例。有什么指示或帮助吗?

2 个答案:

答案 0 :(得分:0)

您可以使用State列,该列具有以下值之一:

  • 接受
  • 有效
  • 已批准
  • 所犯
  • 设计
  • 完成
  • 正在进行中
  • 打开
  • 就绪
  • 删除
  • 请求
  • 解决
  • 待办事项

以下where子句应该这样做:

where [State] != 'Removed'

where [State] <> 'Removed'

答案 1 :(得分:0)

如果您刚从测试套件中删除了测试用例,则工作项仍然处于设计或就绪状态。如果您不再需要,可以考虑将其设置为已关闭。

您应该询问测试计划,而不是查询工作项目。

使用thisthis作为参考,您可以根据需要列出所有测试计划,测试套件和测试用例。

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

namespace TestInfo
{
    class GetTestData
    {
        static void Main(string[] args)
        {
            string serverUrl = "http://tfs2013:8080/tfs/defaultcollection";
            string project = "MyProject";

            TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(serverUrl));
            ITestManagementService tms = tfs.GetService<ITestManagementService>();
            ITestManagementTeamProject proj = tms.GetTeamProject(project);

            // List all Test Plans
            foreach (ITestPlan p in proj.TestPlans.Query("Select * From TestPlan"))
            {
                Console.WriteLine("------------------------------------------------");

                Console.WriteLine("Test Plan - {0} : {1}", p.Id, p.Name);
                Console.WriteLine("------------------------------------------------");

                foreach (ITestSuiteBase suite in p.RootSuite.SubSuites)
                {
                    Console.WriteLine("\tTest Suite: {0}", suite.Title);

                    IStaticTestSuite staticSuite = suite as IStaticTestSuite;
                    ITestSuiteEntryCollection suiteentrys = suite.TestCases;

                    foreach (ITestSuiteEntry testcase in suiteentrys)
                    {
                        Console.WriteLine("\t\tTest Case - {0} : {1}", testcase.Id, testcase.Title);
                    }
                    Console.WriteLine("");
                  }

                Console.WriteLine("");
            }
        }
    }
}