2016-09-07 7 views
1

Wie können die Komponententestergebnisse eines Builds in TFS mithilfe der Rest API abgerufen werden?Wie erhalten Sie Unit-Testergebnisse mit der TFS Rest API?

Die Builddefinition verwendet VNext (Visual Studio 2015 Update 3).

var vssConnection = new VssConnection(_configurationSpec.TeamProjectCollection, 
    new VssClientCredentials()); 
_buildClient = vssConnection.GetClient<BuildHttpClient>(); 
+0

Es sieht aus wie Sie die Protokolle eines bestimmten Build erhalten können (https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#logs) aber nur auf der Grundlage der Dokumentation, sieht nicht so aus, als könnten Sie nur die Testergebnisse noch bekommen :( – Sachi

Antwort

3

Das Testergebnis des Build in Testläufen gespeichert ist, Sie müssen also zuerst den Testlauf des Builds durchführen und dann das Testergebnis aus dem Testlauf abrufen. Im Folgenden ist das Codebeispiel:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string ur = "https://xxxxxxx/"; 
     TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(ur)); 
     //Get build information 
     BuildHttpClient bhc = ttpc.GetClient<BuildHttpClient>(); 
     string projectname = "Project"; 
     int buildId = 1; 
     Build bui = bhc.GetBuildAsync(projectname,buildId).Result; 
     //Get test run for the build 
     TestManagementHttpClient ithc = ttpc.GetClient<TestManagementHttpClient>(); 

     Console.WriteLine(bui.BuildNumber); 

     QueryModel qm = new QueryModel("Select * From TestRun Where BuildNumber Contains '" + bui.BuildNumber + "'"); 

     List<TestRun> testruns = ithc.GetTestRunsByQueryAsync(qm,projectname).Result; 
     foreach (TestRun testrun in testruns) 
     { 

      List<TestCaseResult> testresults = ithc.GetTestResultsAsync(projectname, testrun.Id).Result; 
      foreach (TestCaseResult tcr in testresults) 
       { 
        Console.WriteLine(tcr.TestCase.Name); 
        Console.WriteLine(tcr.Outcome); 
       } 

      Console.ReadLine(); 
     } 
     Console.ReadLine(); 
    } 
} 
+0

Welche Referenz brauche ich? Ich kann diese nicht finden, ist es ein zusätzliches Paket, das ich zuerst installieren muss, um dieses zu verwenden? Ich arbeite mit vs 2015 – Dom84

+0

@ Dom84 Installieren Sie die Nuget-Pakete auf dieser Website erwähnt: https://www.visualstudio.com/en-us/docs/integrate/get-started/client-libraries/dotnet –

1

Sie können versuchen, die Protokolle des betreffenden Schritt zu erhalten, indem diese Rest API in einem Powershell-Skript verwenden.

Es wird logs1 zurückgeben, logs2 entspricht step1, step2.

{ 
    "count": 4, 
    "value": [ 
    { 
     "lineCount": 3, 
     "createdOn": "2015-07-16T19:53:19.747Z", 
     "lastChangedOn": "2015-07-16T19:53:19.92Z", 
     "id": 1, 
     "type": "Container", 
     "url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c/_apis/build/builds/391/logs/1" 
    }, 
    { 
     "lineCount": 113, 
     "createdOn": "2015-07-16T19:53:29.387Z", 
     "lastChangedOn": "2015-07-16T19:53:29.44Z", 
     "id": 2, 
     "type": "Container", 
     "url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c/_apis/build/builds/391/logs/2" 
    }, 

Zum Beispiel:

Nur müssen Sie das Protokoll von Schritt 4 zu erhalten "Prüfaufbauten ..." enter image description here

+1

Irgendeine Idee, warum API diesen Fehler zurückgeben würde: {"$ id": "1", "innerException": null, " message ":" Diese API gilt nur für Protokolle, die im Dateicontainer gespeichert sind. "," typeName ":" Microsoft.TeamFoundation.Build.WebApi.InvalidLogLocationException, Microsoft.TeamFoundation.Build2.WebApi, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "," typeschlüssel ":" InvalidLogLocationException "," errorCode ": 0," eventId ": 3000} – ShP

+0

@ShP Dies funktioniert gut auf meiner Seite, Sie erhalten eine Protokollzusammenfassung mit jedem Build-Schritt die Builddefinition. Und wenn Sie detaillierte Protokolle für jeden Schritt erhalten möchten, müssen Sie eine/logID hinter '/ logs' vor'? Api-version = 2.0' hinzufügen. Scheint, dass dein Problem hier gelöst wurde: https://stackoverflow.com/questions/45743037/tfs-rest-api-not-working-for-logs –

+0

Art von, ich bin in der Lage, PLZ zu bekommen, aber immer noch Fehler beim Versuch JSON Antwort erhalten – ShP

Verwandte Themen