2017-10-04 2 views
1

PowerShell 스크립트를 통해 채워지는 VSTFS 2015에서 야간에 실행되는 SpecFlow 테스트를위한 자동화 된 빌드가 있습니다. 대부분의 테스트는 문제없이 가져 오지만 약 800 개의 테스트 중 약 30 개가 전혀 가져 오지 못합니다.가져 오기 실패 (일부) SpecFlow PowerShell 스크립트를 통해 TFS로 테스트합니까?

오류가 TFS 빌드에서 반환은 다음과 같습니다

TF237086

적어도 하나 개의 필드가 허용되지 않는 값이 포함되어 있기 때문에 작업 항목을 저장할 수 없습니다.

스크립트이므로이 특정 테스트가 일관되게 가져 오지 못하는 것 같습니다. 가져 오기에 실패 woulfd 몇 가지 테스트 이유에



    [CmdletBinding()] 

    $storage = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY\AcmeCo.Acceptance.Tests.dll" 

    Write-Host "Importing tests from '$storage'" 

    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite1" /syncsuite:135777 
    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite2" /syncsuite:148870 
    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite3" /syncsuite:135775 
    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite4" /syncsuite:148872 

    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite5" /syncsuite:135781 
    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite6" /syncsuite:135782 
    & 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TCM.exe' testcase /collection:$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI /teamproject:"AcmeCo" /import /storage:$storage /category:"SomeSuite7" /syncsuite:148869 

    Write-Host "Tests imported" 

    Write-Host "Updating test plans" 
    [Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Client') 
    [Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.TestManagement.Client') 
    [Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Client') 

    # Find all test plans using this build definition 
    $tpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI) 
    $tcm = $tpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService]) 
    $buildServer = $tpc.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) 
    $teamProject = $buildServer.GetBuild($Env:BUILD_BUILDURI); 
    $testProject = $tcm.GetTeamProject($teamProject.TeamProject); 
    $testPlans = $testProject.TestPlans.Query("SELECT * FROM TestPlan") 

    $matchingTestPlans = @() 
    foreach($testPlan in $testPlans) 
    { 
     Write-Host "The current Test Plan build definition is: '$testPlan.BuildFilter.AreaPath'" 

     if($testPlan.BuildFilter.AreaPath -contains 'AcmeCo Test Plan') 
     { 
      $matchingTestPlans += $testPlan 
     } 
    } 

    # Update test plans with latest build 
    if($matchingTestPlans) 
    { 
     Write-Host "Updating test plans using '$Env:BUILD_BUILDDEFINITIONNAME' to '$Env:BUILD_BUILDURI' ($($matchingTestPlans.count) matching test plans)" 

     foreach ($matchingTestPlan in $matchingTestPlans) { 
      $matchingTestPlan.BuildUri = $Env:BUILD_BUILDURI 
      $matchingTestPlan.Save() 
     } 

     Write-Host "Test plans updated" 
    } 
    else 
    { 
     Write-Warning "Found no test plans to update." 
    } 

어떤 아이디어, 또는 누군가가 전에이 건너했습니다

스크립트는 아래에 추가됩니다 (대부분 너희 올드 interweb에서 가져온)?

답변

1

오류를 찾거나 좁히는 가장 좋은 방법은 MTM에서 실패한 자동화 된 테스트 사례를 수동으로 만드는 것입니다.

실제로 테스트 케이스를 만들려면 "제목"값만 필요합니다. 그러나 테스트 케이스에 필드의 잘못된 기본값이 있는지 다시 확인해야합니다. 적어도 하나의 필드에 허용되지 않는 값이 포함되어 있으므로이 오류가 발생합니다. 즉, 테스트 케이스 템플릿 오류 일 수 있습니다. 귀하의 의견 How to troubleshoot TFS error TF237086 "The work item cannot be saved..."

+0

감사합니다 ... 나는 시험에 대한 변경을 시도했지만 성공적으로 서로 상당한 차이를 볼 수 없습니다 :이 비슷한 질문에서 봐 주시기 바랍니다 문제를 해결하기 위해

더 많은 방법 동일한 '기능'파일을 사용하여 테스트를 포함하여 가져온 테스트 당황 스럽다. –

+0

그럼. "제목"이 필요한 유일한 주요 필드이고 테스트가 자동화되어 있으므로 다른 테스트에 비해 테스트의 길이를 살펴 보았습니다. 제목 입력란에는 글자 수 제한이 가장 많습니다. –

+0

또는 charater 인코딩 문제가 있습니다. 이 두 요소를 모두 해결하면 성공적인 테스트 가져 오기가 보장됩니다. 후자! –

관련 문제