Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
WorkItems (Bugs) can be filed in an automated way by using TFS 2010 API.
You first need to add a reference to Microsoft.TeamFoundation.Client.dll and Microsoft.TeamFoundation.WorkItemTracking.Client.
These DLLs can be found under C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies
The below code describes how to create a bug:
// Supply the credentials of the user who will be impersonated to create the bug
ICredentials credentials = new NetworkCredential(userName, password, domain);
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("http://<;server>:8080/tfs/<collection>"), credentials);
WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
WorkItemTypeCollection workItemTypes = workItemStore.Projects[teamProject].WorkItemTypes;
// Define the Work Item type as Bug
WorkItemType workItemType = workItemTypes["Bug"];
// Assign values to each mandatory field
workItem = new WorkItem(workItemType);
// testcaseID is the ID of the test case which failed in a test run. Refer http://social.technet.microsoft.com/wiki/contents/articles/3279.aspx for how to obtain this ID
workItem.Fields["System.Title"].Value = "Testcase #" + testcaseID + " - CI Bug";
workItem.Fields["System.AssignedTo"].Value = "Test Team";
workItem.Fields["Microsoft.VSTS.Common.Severity"].Value = "1-Critical";
workItem.Fields["Microsoft.VSTS.Common.Priority"].Value = "1";
workItem.Fields["System.AreaPath"].Value = "Area";
workItem.Fields["System.IterationPath"].Value = "Iteration";
workItem.Fields["System.State"].Value = "Proposed";
workItem.Fields["Microsoft.VSTS.ED.Type"].Value = "Code Defect";
workItem.Fields["Microsoft.VSTS.ED.BugSource"].Value = "Customer";
workItem.Fields["Microsoft.VSTS.CMMI.FoundInEnvironment"].Value = "7-Continuous Integration";
workItem.Fields["Microsoft.VSTS.Build.FoundIn"].Value = build;
workItem.Fields["Microsoft.VSTS.CMMI.HowFound"].Value = "Automated Test";
workItem.Fields["Microsoft.VSTS.CMMI.Symptom"].Value = HttpUtility.HtmlEncode("Symptom");
workItem.Fields["Microsoft.VSTS.TCM.ReproSteps"].Value = "CI Run";
// Link the failed test case to the Bug
workItem.Links.Add(new RelatedLink(testcaseID));
// Check for validation errors before saving the Bug
ArrayList validationErrors = workItem.Validate();
if (validationErrors.Count == 0)
{
workItem.Save();
Console.WriteLine(message + _workItem.Id);
}
else
{
foreach (Field field in validationErrors)
{
Console.WriteLine("Validation Error in field " + field.ReferenceName);
}
}
Similarly other types of work items can be created by defining the work item type as workItemTypes["Task"], workItemTypes["Test Case"], etc.