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から引き出さ)?
おかげで...私はテストに変更を作ってみましたが、成功した他の任意の有意な差を見ることができない。それは、この同様の質問を見てくださいトラブルシューティングする
より多くの方法インポートされたテスト(同じ 'フィーチャー'ファイルでのテストを含む)やれやれ。 –
だから。 「タイトル」が唯一の必須フィールドであり、テストが自動化されていることを考えると、テストの長さを他のものと比較して調べました。 Titleフィールドには文字制限がある可能性が高いことが分かります。 –
どちらか、またはチャーターエンコーディングの問題があります。これらの要因の両方に対処することで、テストのインポートを成功させることができます。フッツァ! –