Une des façons de se connecter programmatiquement à un TFS est d’utiliser la même boîte de dialogue que celle proposée dans visual studio :
Nous allons voir comment invoquer cette popup grâce à l’api TFS afin de se connecter et de récupérer les test cases du projet sélectionné.
Note : n’oubliez pas de référencer les assemblies suivantes :
- Microsoft. TeamFoundation. Client
- Microsoft. TeamFoundation. TestManagement. Client
- Microsoft. TeamFoundation. WorkItemTracking. Client
Ouvrir la boîte de dialogue
Rien de plus simple :
TeamProjectPicker tpp = new TeamProjectPicker(
TeamProjectPickerMode.SingleProject, false);
tpp.ShowDialog();
On peut préciser si la multi-sélection est autorisée (TeamProjectPickerMode. MultiProject) ou comme dans notre cas on n’autorise qu’un seul projet sélectionné (TeamProjectPickerMode. SingleProject).
Et voilà ! sur le click du bouton de mon application (en arrière-plan) la popup s’affiche ! Facile !
Charger les test cases du projet sélectionné
Après s’être connecté, on peut récupérer le (s) projet (s) sélectionné (s) sur notre objet TeamProjectPicker :
string projectName = tpp.SelectedProjects.First().Name;
Note : La propriété SelectedProjects est un tableau de ProjectInfo. Ce type expose uniquement le nom, le status, et l’uri du projet.
L’objet principal de l’api pour la gestion des tests est ITestManagementService.
Voici comment récupérer une instance :
TfsTeamProjectCollection collection = tpp.SelectedTeamProjectCollection;
ITestManagementService test_service = (ITestManagementService)collection
.GetService(typeof(ITestManagementService));
Les objets de ce type peuvent nous fournir des informations sur les controlleurs de test, ou permettent également de rechercher un résultat de test. La méthode qui nous intéresse ici est GetTeamProjet. Cette méthode renvoie un objet de type ITestManagementTeamProject.
ITestManagementTeamProject proj =
test_service.GetTeamProject(projectName);
ITestManagementTeamProject permet d’obtenir les actions de ces tests cases, les uri des pièces-jointes de ces actions… . Bref de quoi s”amuser !
Il nous reste donc à charger les tests cases de notre projet :
var testCases = (from tc in proj.TestCases.Query
(
"Select * from [WorkItems]"
)
select string.Concat
(
"Title: ", tc.Title,
" | Id: ", tc.Id,
" | State: ", tc.State
))
.ToList();
Et voilà le résultat :
Pour finir voici le code complet de la méthode click de mon bouton “connect” :
TeamProjectPicker tpp =
new TeamProjectPicker(TeamProjectPickerMode.SingleProject,false);
tpp.ShowDialog();
if (tpp.SelectedProjects == null || !tpp.SelectedProjects.Any())
return;
string projectName = tpp.SelectedProjects.First().Name;
tbProjectName.Text = projectName;
TfsTeamProjectCollection collection = tpp.SelectedTeamProjectCollection;
ITestManagementService test_service = (ITestManagementService)collection
.GetService(typeof(ITestManagementService));
ITestManagementTeamProject proj =
test_service.GetTeamProject(projectName);
var testCases = (from tc in proj.TestCases.Query
(
"Select * from [WorkItems]"
)
select string.Concat
(
"Title: ", tc.Title,
" | Id: ", tc.Id,
" | State: ", tc.State
))
.ToList();
lbWI.ItemsSource = testCases;