2015-09-11 1 views
0

Je dois interroger et obtenir le fichier de résultats de test trx à partir de TFS 2013 afin que je puisse le modifier et l'utiliser pour la génération de rapports. Je n'ai trouvé aucune méthode dans IBuildServer qui me permet d'interroger le fichier trx. Est-il possible de lire le fichier en utilisant BuildDetail.DropLocation où j'ai la chaîne qui me dit l'emplacement du fichier trx. Je l'ai écrit quelques lignes comme ci-dessousComment obtenir le fichier de résultats de test trx (généré à partir de vstest) à partir de TFS Api

TfsSerice = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUri)); 
TfsSerice.EnsureAuthenticated(); 
var buildServer = (IBuildServer)TfsSerice.GetService(typeof(IBuildServer)); 
BuildDetail = buildServer.QueryBuilds("MyUserLibrary").FirstOrDefault(); 

Répondre

1

Compris. J'ai ajouté un wrapper de service TFS comme ci-dessous qui saisit le fichier TRX de la dernière version. Voici le code, Enjoy !!!!

using System.Linq; 
using System.Net; 
using System.Xml; 
using System.Xml.Linq; 
using Microsoft.TeamFoundation.Build.Client; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.TestManagement.Client; 
using System.Configuration; 
using System; 


namespace TfsService 
{ 
    public class TfsServiceWrapper 
    { 
     public TfsTeamProjectCollection TeamProjectCollection { get; private set; } 
     public string TeamProject { get; private set; } 
     public string BuildName { get; private set; } 
     public Uri TfsUri { get; private set; } 

     public TfsServiceWrapper() 
     { 
      TfsUri = new Uri(ConfigurationManager.AppSettings["tfsUri"]); 
      TeamProject = ConfigurationManager.AppSettings["teamProject"]; 
      BuildName = ConfigurationManager.AppSettings["buildName"]; 
      ConnectToTeamProjectCollection(); 
     } 

     public TfsServiceWrapper(Uri tfsUri, string teamProject, string buildName) 
     { 
      TfsUri = tfsUri; 
      TeamProject = teamProject; 
      BuildName = buildName; 
      ConnectToTeamProjectCollection(); 
     } 

     private void ConnectToTeamProjectCollection() 
     { 
      TeamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(TfsUri); 
      TeamProjectCollection.EnsureAuthenticated(); 
     } 

     public IBuildDetail LatestBuildDetail 
     { 
      get 
      { 
       var spec = BuildServer.CreateBuildDetailSpec(TeamProject, BuildName); 
       spec.MaxBuildsPerDefinition = 1; 
       spec.QueryOrder = BuildQueryOrder.FinishTimeDescending; 
       return BuildServer.QueryBuilds(spec).Builds.FirstOrDefault(); 
      } 
     } 

     public IBuildServer BuildServer 
     { 
      get 
      { 
       return (IBuildServer)TeamProjectCollection.GetService(typeof(IBuildServer)); 
      } 
     } 


     public ITestManagementService TestManagementService 
     { 
      get 
      { 
       return (ITestManagementService)TeamProjectCollection.GetService(typeof(ITestManagementService)); 
      } 
     } 

     public XDocument LatestTestResultFile 
     { 
      get 
      { 
       var latestRun = TestManagementService.GetTeamProject(TeamProject).TestRuns.ByBuild(LatestBuildDetail.Uri).First(run => run.QueryResults().Any()); 
       var resolver = new XmlUrlResolver {Credentials = CredentialCache.DefaultCredentials}; 
       var settings = new XmlReaderSettings {XmlResolver = resolver}; 
       var reader = XmlReader.Create(latestRun.Attachments[0].Uri.ToString(), settings); 
       return XDocument.Load(reader); 
      } 
     } 

    } 
} 
2

Vous pouvez utiliser le code ci-dessous pour lire le fichier de résultat du test .trx:

TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsservername:8080/tfs/DefaultCollection")); 
     ITestManagementTeamProject project = tfs.GetService<ITestManagementService>().GetTeamProject("teamprojectname"); 

     foreach (ITestRun tRun in project.TestRuns.ByBuild(new Uri(("vstfs:///Build/Build/531")))) 
     { 
      foreach (ITestCaseResult tr in tRun.QueryResults()) 
      { 
       Console.WriteLine(tr.TestCaseTitle.ToString() + ":" + tr.Outcome.ToString()); 
      } 
     } 

Soyez noter que, vous devez choisir de remplacer vstfs: /// Créer/Construire/531 avec votre propre buildUri. Pour l'obtenir, utilisez le code suivant:

+0

Tx mate, j'ai écrit un wrapper de service TFS comme ci-dessous. – Rasika