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에서 가져온)?
감사합니다 ... 나는 시험에 대한 변경을 시도했지만 성공적으로 서로 상당한 차이를 볼 수 없습니다 :이 비슷한 질문에서 봐 주시기 바랍니다 문제를 해결하기 위해
더 많은 방법 동일한 '기능'파일을 사용하여 테스트를 포함하여 가져온 테스트 당황 스럽다. –
그럼. "제목"이 필요한 유일한 주요 필드이고 테스트가 자동화되어 있으므로 다른 테스트에 비해 테스트의 길이를 살펴 보았습니다. 제목 입력란에는 글자 수 제한이 가장 많습니다. –
또는 charater 인코딩 문제가 있습니다. 이 두 요소를 모두 해결하면 성공적인 테스트 가져 오기가 보장됩니다. 후자! –