whoknows
whoknows

Reputation: 395

In TFS, how do I find all Test Cases in a Test Suite with a query (C#)?

With Team Foundation Server, given a WorkItem of type "Test Suite," how can I write a query to select all Test Cases associated to that Test Suite?

Upvotes: 11

Views: 18488

Answers (4)

Wouter de Kort
Wouter de Kort

Reputation: 39888

Unfortunately, there are no work item links created between Test Plans, Suites and Cases. So although they are Work Items, they don't have links. This means that a default query isn't possible.

A work around is tagging all test cases in a suite with the name of the suite. You can then use a query that filters on the work item tags.

You can go even further and automate the creation of tags by using some Web Hooks and Azure Functions (or some other hosted API) magic. This allows you to create a Web Hook that listens for the creation (or updates) to Test Cases. By using some of the code mentioned in the other posts you can retrieve the Test Suite of the Test Case and then use the REST API to add it as a Tag to the Test Case.

Upvotes: 6

Milan
Milan

Reputation: 203

"Show tests from child suites" is the option that you want. To see the screenshot click here. No need for the query. As the name of the option says it lists all the child tests from the suite. You might need Test Manager TFS plugin for this.

Upvotes: 0

Jophy job
Jophy job

Reputation: 1964

If you are using TFS 2015 or higher,

you can check this link :

  1. usage

  2. TestCaseExplorer Tool

  3. list-bugs-and-the-test-cases-that-test-them enter image description here

if Not using TFS 2015 or higher :

For now, there is no way to create ordinary TFS query via Web interface and not API call or custom coding to get list of Test Cases belongs to a specific Test Suite. support-querying-for-all-test-cases-in-a-specifed

Or try old tool : test-plans-test-suites-test-cases-mapping

Upvotes: 1

Chamberlain
Chamberlain

Reputation: 901

You may need to use this Interface ITestSuiteBase.

AllTestCases 

     Gets the read-only collection of test cases for this suite and all hierarchical children.

TestCases 

     Gets a read-only collection of test cases.

More info from MSDN

Here is a example code:

public static List<TestCase> GetAllTestCaseFromSuite(ITestPlan testPlan, int suiteId, bool includeExecutionStatus = true)
{
    List<TestCase> testCases = new List<TestCase>();
    testPlan.Refresh();
    ITestSuiteBase currentSuite = testPlan.Project.TestSuites.Find(suiteId);
    currentSuite.Refresh();
    foreach (var currentTestCase in currentSuite.TestCases)
    {
        TestCase testCaseToAdd = new TestCase(currentTestCase.TestCase, currentSuite, testPlan, includeExecutionStatus);
        if (!testCases.Contains(testCaseToAdd))
        {
            testCases.Add(testCaseToAdd);
        }
    }
    log.InfoFormat("Load all test cases in the suite with Title= \"{0}\" id = \"{1}\"", currentSuite.Title, currentSuite.Id);
    return testCases;
}

More details you can refer this blog: Manage TFS Test Cases C# Code

Upvotes: 3

Related Questions