始终检索 TFS 测试步骤 returns 计数为 0
Retrieve TFS Test Steps always returns count of 0
我正在尝试使用 API(Microsoft.TeamFoundationServer.ExtendedClient v15.112.1)检索已添加到 TFS (2017.2) 测试用例中的测试步骤(又名 "actions") .我当前的实现总是 returns 0 个测试步骤,尽管实际的测试用例有步骤。我也在一个干净的新团队项目中尝试了这个,没有任何工作项自定义,甚至 returns 0 个步骤。我的实现使用较旧的 API(基于 SOAP 网络服务),因为看起来较新的基于 http 的 API 尚未实现测试步骤。这是我使用的代码:
private void GetTestStepsForTestCase(int testCaseId, int testSuiteId,
string teamProjectName, Uri tfsUrl)
{
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(tfsUrl);
ITestManagementService itms = tpc.GetService<ITestManagementService>();
ITestManagementTeamProject ittp = itms.GetTeamProject(teamProjectName);
ITestSuiteBase suite = ittp.TestSuites.Find(testSuiteId);
ITestCaseCollection testCaseCollection = suite.AllTestCases;
ITestCase itestCase = testCaseCollection.FirstOrDefault(t => t.Id == testCaseId);
foreach (Microsoft.TeamFoundation.TestManagement.Client.ITestAction itestAction in itestCase.Actions)
{
// Do something
}
}
有人吗?
您可以使用下面的示例从特定测试套件中检索测试用例步骤,它在我这边有效:
安装 nuget 包:Microsoft.TeamFoundationServer.ExtendedClient - 15.112.1
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;
using Microsoft.VisualStudio.Services.Client;
using System;
namespace RetrieveTestSteps
{
class Program
{
static void Main(string[] args)
{
var u = new Uri("http://server:8080/tfs/DefaultCollection");
var c = new VssClientCredentials();
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(u, c);
tpc.EnsureAuthenticated();
ITestManagementService itms = tpc.GetService<ITestManagementService>();
ITestManagementTeamProject ittp = itms.GetTeamProject("LCScrum");
ITestSuiteBase suite = ittp.TestSuites.Find(352);
ITestCaseCollection testCaseCollection = suite.AllTestCases;
foreach (var tc in testCaseCollection)
{
ITestCase testcase = ittp.TestCases.Find(tc.Id);
foreach (ITestAction action in testcase.Actions)
{
Console.WriteLine(String.Format("{0} - {1}", testcase.Id, action));
}
}
Console.Read();
}
}
}
好的,我终于自己弄明白了。 Andy 的回答和评论帮助我验证了我的代码是正确的。我刚刚发现我的代码在不调试时运行良好!调试时,在某个时候我注意到了这一点:
所以可能由于某处的延迟加载,无法验证附件调试时间的计数(请参阅此处 post:Lazy<T>: "The function evaluation requires all threads to run")。
我正在尝试使用 API(Microsoft.TeamFoundationServer.ExtendedClient v15.112.1)检索已添加到 TFS (2017.2) 测试用例中的测试步骤(又名 "actions") .我当前的实现总是 returns 0 个测试步骤,尽管实际的测试用例有步骤。我也在一个干净的新团队项目中尝试了这个,没有任何工作项自定义,甚至 returns 0 个步骤。我的实现使用较旧的 API(基于 SOAP 网络服务),因为看起来较新的基于 http 的 API 尚未实现测试步骤。这是我使用的代码:
private void GetTestStepsForTestCase(int testCaseId, int testSuiteId,
string teamProjectName, Uri tfsUrl)
{
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(tfsUrl);
ITestManagementService itms = tpc.GetService<ITestManagementService>();
ITestManagementTeamProject ittp = itms.GetTeamProject(teamProjectName);
ITestSuiteBase suite = ittp.TestSuites.Find(testSuiteId);
ITestCaseCollection testCaseCollection = suite.AllTestCases;
ITestCase itestCase = testCaseCollection.FirstOrDefault(t => t.Id == testCaseId);
foreach (Microsoft.TeamFoundation.TestManagement.Client.ITestAction itestAction in itestCase.Actions)
{
// Do something
}
}
有人吗?
您可以使用下面的示例从特定测试套件中检索测试用例步骤,它在我这边有效:
安装 nuget 包:Microsoft.TeamFoundationServer.ExtendedClient - 15.112.1
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;
using Microsoft.VisualStudio.Services.Client;
using System;
namespace RetrieveTestSteps
{
class Program
{
static void Main(string[] args)
{
var u = new Uri("http://server:8080/tfs/DefaultCollection");
var c = new VssClientCredentials();
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(u, c);
tpc.EnsureAuthenticated();
ITestManagementService itms = tpc.GetService<ITestManagementService>();
ITestManagementTeamProject ittp = itms.GetTeamProject("LCScrum");
ITestSuiteBase suite = ittp.TestSuites.Find(352);
ITestCaseCollection testCaseCollection = suite.AllTestCases;
foreach (var tc in testCaseCollection)
{
ITestCase testcase = ittp.TestCases.Find(tc.Id);
foreach (ITestAction action in testcase.Actions)
{
Console.WriteLine(String.Format("{0} - {1}", testcase.Id, action));
}
}
Console.Read();
}
}
}
好的,我终于自己弄明白了。 Andy 的回答和评论帮助我验证了我的代码是正确的。我刚刚发现我的代码在不调试时运行良好!调试时,在某个时候我注意到了这一点:
所以可能由于某处的延迟加载,无法验证附件调试时间的计数(请参阅此处 post:Lazy<T>: "The function evaluation requires all threads to run")。