2016-09-07 10 views
1

Rest APIを使用してTFSでビルドのユニットテスト結果を取得するにはどうすればよいですか?TFS Rest APIを使用して単体テスト結果を取得する方法は?

ビルド定義では、VNext(Visual Studio 2015 Update 3)を使用します。

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

あなたが特定のビルド(https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#logsのログを取得することができますように見えます)しかし、ドキュメントだけに基づいて、あなたはまだテスト結果を得ることができないように見えます:( – Sachi

答えて

3

ビルドのテスト結果は、テストの実行中に保存されているステップ4のログ「テストアセンブリを...」を取得する必要があり、まずビルドのテスト実行を取得してから、テスト実行からテスト結果を取得する必要があります。続いて、コードサンプルです:

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

どの参照が必要ですか?私はそれらを見つけることができない、それは私がこれを使用するために最初にインストールする必要があるいくつかの余分なパッケージですか?私はvs 2015を扱います – Dom84

+0

@ Dom84このサイトに記載されているナゲットパッケージをインストールしてください:https://www.visualstudio.com/en-us/docs/integrate/get-started/client-libraries/dotnet –

1

powershellスクリプトでRest APIを使用すると、関連する手順のログを取得できます。

GET https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/Fabrikam-Fiber-Git/_apis/build/builds/391/logs?api-version=2.0 

これはlogs1を返します.log2は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" 
    }, 

ちょうど enter image description here

+1

APIがこのエラーを返すのではないかと思います。{"$ id": "1"、 "innerException":null、メッセージ ":"このAPIは、ファイルコンテナに保存されたログにのみ適用されます。 "、" typeName ":" Microsoft.TeamFoundation.Build.WebApi.InvalidLogLocationException、Microsoft.TeamFoundation.Build2.WebApi、Version = 14.0.0.0、Culture =中継、PublicKeyToken = b03f5f7f11d50a3a "、" typeKey ":" InvalidLogLocationException "、" errorCode ":0、" eventId ":3000} – ShP

+0

@ShPこれは私の側でうまくいきます。ビルドの定義また、各ステップの詳細ログを取得する場合は、 '?api-version = 2.0'の前に'/logs'の後に/ logIDを追加する必要があります。ここであなたの問題が解決されたようです:https://stackoverflow.com/questions/45743037/tfs-rest-api-not-working-for-logs –

+0

種類、私はzipを得ることができますが、試してみるとまだエラーが発生していますjsonの応答を得るには – ShP

関連する問題