2014-02-12 6 views
5

Ich arbeite mit einem Schulprojekt, wo ich eine Defektdatenbank eines Unternehmens analysieren werde. Sie verwenden Microsoft Foundation Server (TFS). Ich bin komplett neu in TFS und TFS api.Zeige Testergebnis Formular Testsuites mit TFS api

Ich habe ein Problem beim Abrufen der richtigen Daten von TFS mit dem TFS-Client-Objektmodell . Ich kann alle Testpläne, ihre jeweiligen Testsuiten und jeden Testfall, den eine bestimmte Testsuite verwendet, abrufen, aber das Problem kommt, wenn ich sehen möchte, in welcher Testsuite ich ein spezifisches Testergebnis aus einem Testfall habe. Da mehr als eine Suite die gleichen Testfälle verwenden kann, kann ich nicht erkennen, in welcher Suite das Ergebnis herkommt.

ich auf diese Weise mache Testfälle aus Suiten in immer:

foreach (ITestSuiteEntry testcase in suiteEntrys) 
{ 
    Console.WriteLine("\t \t Test Case: {0}", testcase.Title+", "+"Test case priority: "+ testcase.TestCase.Priority+"Test case Id: "+testcase.TestCase.Id); 
    //Console.Write(", Test Case: {0}", testcase.ToString()); 

    //get each test result: 
    getTestResult(testcase,proj); 
} 

private void getTestResult(ITestSuiteEntry testcase, ITestManagementTeamProject proj) 
{ 
    var testResults = proj.TestResults.ByTestId(testcase.TestCase.Id); 
    foreach (ITestCaseResult result in testResults) 
    { 
     Console.WriteLine("\t \t \t"+result.DateCreated+","+result.Outcome); 
    } 
} 

Also meine Frage ist, wie kann ich die Test-Suite zu sehen, die den Test ausführen wurden verwendet, um?

+0

Ich bin nicht ganz sicher, da ich nicht in diesem Teil der API in den letzten Tagen vertieft haben, aber ich erinnere mich, dass die ' ITestPoint'/'TestPointId' verknüpft das Testergebnis tatsächlich mit der Testsuite. – jessehouwing

+0

Dieser Blogpost könnte Ihnen auch weiterhelfen: http://blogs.msdn.com/b/densto/archive/2010/03/04/the-test-management-api-part-2-creating-modifying-test- planes.aspx? Redirected = true – jessehouwing

Antwort

8

Sehen Sie sich das folgende Code-Snippet an.
Es zeigt Ihnen, wie Sie Testergebnisse für eine spezifische Testsuite mit Testpunkte IDs erhalten.
Sie können einen ähnlichen Ansatz verwenden, um Ihr Ziel zu erreichen.

var tfsCollection = new TfsTeamProjectCollection(
     new Uri(tfsUrl), 
     new System.Net.NetworkCredential(<user>, <password>)); 
tfsCollection.EnsureAuthenticated(); 

var testManagementService = tfsCollection.GetService<ITestManagementService>(); 
var teamProject = testManagementService.GetTeamProject(projectName); 
var testPlan = teamProject.TestPlans.Find(testPlanId); 

// Get all Test Cases belonging to a particular Test Suite. 
// (If you are using several Test Configurations and want to take only one of them into account, 
// you will have to add 'AND ConfigurationId = <your Test Configuration Id>' to the WHERE clause.) 
string queryForTestPointsForSpecificTestSuite = string.Format("SELECT * FROM TestPoint WHERE SuiteId = {0}", suiteId); 
var testPoints = testPlan.QueryTestPoints(queryForTestPointsForSpecificTestSuite); 
// We are going to use these ids when analyzing Test Results 
List<int> testPointsIds = (from testPoint in testPoints select testPoint.Id).ToList(); 

var testResults = teamProject.TestResults.ByTestId(testCaseId); 

var testResultsForSpecificTestSuite = testResults.Where(testResult => testPointsIds.Contains(testResult.TestPointId)); 

Dieser Blog-Eintrag wird Ihnen helfen, wenn Erstellen von Abfragen: WIQL for Test

+0

Ja das hat mein Problem gelöst, thnaks sehr. – user1418385

+0

Sie sind herzlich willkommen :-) – Elena

+0

Ich bekomme Nullpointerexception auf testManagementService. Irgendwelche Ideen warum? – mosaad

Verwandte Themen