У меня есть автоматизированная сборка для тестов SpecFlow, запускаемых каждую ночь в VSTFS 2015, которая заполняется с помощью сценария PowerShell. Большинство тестов импортируются без проблем, однако из примерно 800 тестов примерно 30 вообще не импортируются.
Ошибка, возвращенная из сборки TFS:
TF237086: рабочий элемент не может быть сохранен, так как по крайней мере одно поле содержит недопустимое значение.
Поскольку это сценарий, кажется странным, что эти конкретные тесты постоянно не импортируются.
Сценарий добавлен ниже (в основном взят из старого интернета):
[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."
}
Любые идеи относительно того, почему некоторые тесты не могут быть импортированы, или кто-то сталкивался с этим раньше?