Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
One of the most common asks on the visual studio user voice website has been to have a way to find out in what all test suites / test plans a test case is located (link). You can use the attached tool to find this.
The usage of the tool is :
FindTestCase <TestCaseId> <ServerUrl> <ProjectName>
TestCaseId - The id of the test case to be found.Eg : 515
ServerUrl- The server url . Eg : https://localhost:8080/tfs/DefaultCollection
ProjectName - The project name
I present some sample code below to help with this issue. The code is fairly straightfoward. Do let me know if you have any questions / find any bugs in the code.
namespace FindTestCase
{
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;
using System;
using System.Linq;
class FindTestCase
{
static void Main(string[] args)
{
int testCaseId;
if (args.Count() < 3)
{
Console.WriteLine("Usage : FindTestCase <TestCaseId> <ServerUrl> <ProjectName>");
return;
}
if (!int.TryParse(args[0], out testCaseId))
{
Console.WriteLine("The test case id must be an
integer");
return;
}
string serverUrl = args[1];
string projectName = args[2];
var projectCollectionUri = new Uri(serverUrl);
var projectCollection = TfsTeamProjectCollectionFactory.
GetTeamProjectCollection(projectCollectionUri);
ITestManagementTeamProject project = projectCollection.
GetService<ITestManagementService>().GetTeamProject(
projectName);
foreach (ITestPlan testPlan in project.TestPlans.Query(
"SELECT * from TestPlan"))
{
//Check if the test case is present in the plan
if (testPlan.RootSuite.AllTestCases.Where(tc => tc.Id
== testCaseId).Count() > 0)
{
//If the test case is present, dig deeper to find
the suite(s) where it is present
FindInSuites(testPlan.RootSuite,
testCaseId);
}
}
}
static void FindInSuites(IStaticTestSuite testSuite, int testCaseId)
{
foreach (ITestSuiteEntry entry in testSuite.Entries)
{
if (entry.EntryType == TestSuiteEntryType.TestCase)
{
if (entry.Id == testCaseId)
{
Console.WriteLine("Test suite Id : {0}, Test
suite title : {1}, Test plan id : {2}",
testSuite.Id, testSuite.Title, testSuite.Plan.
Id);
}
}
else
{
IStaticTestSuite staticSuite = entry.TestObject as
IStaticTestSuite;
if (staticSuite != null)
{
FindInSuites(staticSuite,testCaseId);
}
else
{
//Check in query based or requirement based
suites which cannot contain another suite as
child
IDynamicTestSuiteBase dynamicSuite = entry.
TestObject as IDynamicTestSuiteBase;
if (dynamicSuite != null)
{
if (dynamicSuite.TestCases.Where(tc => tc.
Id == testCaseId).Count() > 0)
{
Console.WriteLine("Test suite Id : {0},
Test suite title : {1}, Test plan id :
{2}", dynamicSuite.Id, dynamicSuite.
Title, dynamicSuite.Plan.Id);
}
}
}
}
}
}
}
}