我创建了一个带有一些SQL查询的C#项目,以便使用API从TFS获取数据。众所周知,我们无法永久地从TFS服务器中删除测试用例/工作项。它只是从UI中删除案例,而不是从数据库中删除。那么如何从未删除的案例中过滤已删除的案例呢?
我使用了以下查询:
String query = "SELECT * FROM WorkItems WHERE [Team Project]=" + "'" + projname + "'";
因此,此查询返回projname项目中存在的所有案例,包括已删除的案例。有什么指示或帮助吗?
答案 0 :(得分:0)
您可以使用State
列,该列具有以下值之一:
以下where
子句应该这样做:
where [State] != 'Removed'
或
where [State] <> 'Removed'
答案 1 :(得分:0)
如果您刚从测试套件中删除了测试用例,则工作项仍然处于设计或就绪状态。如果您不再需要,可以考虑将其设置为已关闭。
您应该询问测试计划,而不是查询工作项目。
使用this和this作为参考,您可以根据需要列出所有测试计划,测试套件和测试用例。
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("");
}
}
}
}