2017-10-04 2 views
1

PowerShellスクリプトを使用して実装されたVSTFS 2015で夜間に実行されるSpecFlowテスト用の自動ビルドがあります。ほとんどのテストは問題なくインポートされますが、約800のテストのうち約30個はまったくインポートできません。PowerShellスクリプトを使用してSpecFlowテストをTFSにインポートできませんでしたか?

誤差があるTFSのビルドから返さ:

TF237086:少なくとも1つのフィールドに許可されていない値が含まれているため、作業項目を保存することはできません。

これはスクリプトなので、これらの特定のテストが一貫してインポートに失敗することは奇妙に思えます。インポートに失敗し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で手動で失敗した自動テストケースを作成することです。

実際にテストケースを作成するには、「タイトル」という値が必要です。ただし、テストケースのフィールドのデフォルト値が間違っているかどうかを再度確認する必要があります。少なくとも1つのフィールドには許可されていない値が含まれているため、このエラーが発生します。これは、テストケースのテンプレートエラーである可能性があります。あなたの入力のためのHow to troubleshoot TFS error TF237086 "The work item cannot be saved..."

+0

おかげで...私はテストに変更を作ってみましたが、成功した他の任意の有意な差を見ることができない。それは、この同様の質問を見てくださいトラブルシューティングする

より多くの方法インポートされたテスト(同じ 'フィーチャー'ファイルでのテストを含む)やれやれ。 –

+0

だから。 「タイトル」が唯一の必須フィールドであり、テストが自動化されていることを考えると、テストの長さを他のものと比較して調べました。 Titleフィールドには文字制限がある可能性が高いことが分かります。 –

+0

どちらか、またはチャーターエンコーディングの問題があります。これらの要因の両方に対処することで、テストのインポートを成功させることができます。フッツァ! –

関連する問題