Я подумал, есть ли инструмент, который может помочь в создании пользовательских историй Azure на основе класса, доступного в покрытии кода в проекте C#? Я хотел, чтобы это произошло:
это будет полезно перед началом модульного тестирования.
Я не пробовал, но спрашиваю, есть ли существующее приложение для этого или чего-то подобного? Я тоже планирую создать, если это возможно.





Боюсь, что не существует готового метода, который мог бы автоматически создавать рабочий элемент пользовательской истории в зависимости от того, выполняет ли класс покрытие кода.
В качестве обходного пути мы можем использовать сценарий для чтения файла .coverage (генерируемого после выполнения покрытия кода) и получения имени класса для создания рабочего элемента.
Вот шаги:
Шаг 1. Сохраните файл .coverage в файл .coveragexml с помощью следующей команды:
dotnet tool install --global dotnet-coverageconverter
dotnet-coverageconverter --CoverageFilesFolder "$(Agent.TempDirectory)\TestResults"
Пример .coveragexml:
....
<functions>
<function id = "8272" token = "0x6000001" name = "BankAccount()" namespace = "Bank" type_name = "BankAccount" block_coverage = "0.00" line_coverage = "0.00" blocks_covered = "0" blocks_not_covered = "2" lines_covered = "0" lines_partially_covered = "0" lines_not_covered = "2">
....
Шаг 2. Добавьте задачу PowerShell и используйте сценарий PowerShell, чтобы прочитать файл .coveragexml и получить имена всех классов. Затем мы можем использовать Rest API: Рабочие элементы — Создать, чтобы создать рабочий элемент.
Пример сценария PowerShell:
$coveragefilename = Get-ChildItem $(Agent.TempDirectory)\TestResults\**\*.coveragexml | Select-Object -ExpandProperty Name
[xml]$DSConfig = gc "$(Agent.TempDirectory)\TestResults\**\$coveragefilename"
$ParametersNode = $DSConfig.SelectNodes('//function')
$a =@()
# Loop over selected nodes
foreach($function in $ParametersNode){
$a += $function.type_name
}
$a = $a | select -Unique
foreach($classname in $a)
{
echo $classname
$token = "PAT"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$url= "https://dev.azure.com/{organizationname}/{projectname}/_apis/wit/workitems/`$user story?api-version=6.0"
$JSON3 = "
[
{
`"op`": `"add`",
`"path`": `"/fields/System.Title`",
`"from`": null,
`"value`": `" classname: $classname`"
}
]
"
$response3 = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON3 -ContentType application/json-patch+json
}
Результат:
спасибо за эту ссылку! попробую это спасибо!!