2017-11-22 5 views

답변

2

매개 변수와 첨부 파일을 사용하여 테스트 사례를 TFS에서 VSTS로 개별적으로 마이그레이션하는 것은 어렵습니다.

시험 계획/스위트/케이스 밝혀졌다 Bulk Migrate Work Item Comments, Links and Attachments

테스트 케이스 마이그레이션하기 어려운 특히 일을 참조하십시오. 우리에게 이 가능할 수있는 툴링을 찾을 수 없었습니다. TFS SDK (온 - 프레미스)을 사용하여 테스트를 관리 할 수 ​​있으며 VSTS를위한 편안한 API가 있으므로 시간이 허용되는 경우 맞춤 솔루션 을 생성 할 수 있습니다.

불행하게도 Excel은 테스트 계획 및 스위트가 평소와 같이 쿼리 될 수없고 테스트 스위트 및 테스트 세트가 게시 될 때 이 테스트 스위트 또는 계획에 링크 될 수 없기 때문에 질문에서 제외되었습니다. OpsHub Visual Studio Online Migration Utility

: 또한이 도구를 시도 할 수 있습니다 TFS 2017 Migration To VSTS with VSTS Sync Migrator

: Source Here

그러나이 문서에 언급 된 단계를 수행하여 VSTS Sync Migrator 도구를 시도 할 수 있습니다 전체 프로젝트를 TFS에서 VSTS로 마이그레이션하려는 경우 공식 TfsMigrator tool을 사용하여 가이드를 수행하면됩니다.

참고 : 먼저 지원되는 버전으로 TFS를 업그레이드해야.

또한 마이그레이션 기사 아래 referenc 수

: 우리의 VSTS (그러나 매개 변수 및 첨부 파일에 TFS에서 테스트 케이스를 이동 할 수 있었다

+0

감사 앤디를 사용했다. 고마워요! – Coder

0

테스트 사례가 마이그레이션되지 않았습니다.

@Andy Li-MSFT 덕분에 (유용한 링크 및 설명 참조) 웹/브레인 스토밍을 탐색하면서 C#에서 이전 테스트 사례의 매개 변수와 첨부 파일을 VSTS의 새로 이동 한 테스트 사례로 복사하는 코드를 작성했습니다.

네임 스페이스이 매우 도움이되었다,

using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 
using Microsoft.TeamFoundation.TestManagement.Client; 
using System.Net; 


List<int> TestCaseIds_Old = new List<int> { 100, 102, 103 }; 
      List<int> TestCaseIds_New = new List<int> { 10023, 42102, 67103 }; 

      TfsTeamProjectCollection teamProjectCollection_Old = new TfsTeamProjectCollection(new Uri("OLD TFS Collection URL")); 
      TfsTeamProjectCollection teamProjectCollection_New = new TfsTeamProjectCollection(new Uri("NEW TFS Collection URL")); 

      ITestManagementService testManService_Old = teamProjectCollection_Old.GetService<ITestManagementService>(); 
      ITestManagementService testManService_New = teamProjectCollection_New.GetService<ITestManagementService>(); 

      var project_Old = testManService_Old.GetTeamProject("OLD Project"); 
      var project_New = testManService_New.GetTeamProject("NEW Project"); 

      for (int id = 0; id < TestCaseIds_New.Count; id++) 
      { 
       var testCase_Old = project_Old.TestCases.Find(TestCaseIds_Old[id]); 
       var testCase_New = project_New.TestCases.Find(TestCaseIds_New[id]); 
       for (int i = 0; i < testCase_Old.Data.Tables[0].Rows.Count; i++) 
       { 
        var rowCollection = testCase_Old.Data.Tables[0].Rows[i].ItemArray; 
        testCase_New.Data.Tables[0].Rows.Add(rowCollection); 
       } 

       List<string> fileLocations = new List<string>(); 
       if (testCase_Old.Attachments.Count > 0) 
       { 
        WorkItemStore workItemStore = teamProjectCollection_Old.GetService<WorkItemStore>(); 
        WorkItem requiredWorkItem = workItemStore.GetWorkItem(TestCaseIds_Old[id]); 
        WebClient webClient = new WebClient(); 
        webClient.Credentials = System.Net.CredentialCache.DefaultCredentials; 
        for (int i = 0; i < requiredWorkItem.Attachments.Count; i++) 
        { 
         webClient.DownloadFile(requiredWorkItem.Attachments[i].Uri, "D:\\Attachments\\" + requiredWorkItem.Attachments[i].Name); 
         testCase_New.Attachments.Add(testCase_New.CreateAttachment("D:\\Attachments\\" + requiredWorkItem.Attachments[i].Name, SourceFileAction.None)); 
         fileLocations.Add("D:\\Attachments\\" + requiredWorkItem.Attachments[i].Name); 
        } 

       } 
       testCase_New.Save(); 
       for (int i = 0; i < fileLocations.Count; i++) 
       { 
        File.Delete(fileLocations[0]); 
       } 

      }