У меня есть сборка vNext, которая запускает несколько тестов NUnit и публикует результаты.Однако выходные данные, полученные в результате испытаний, не публикуются, даже если они находятся в соответствующем файле XML.
Например:
Но, если я проверю соответствующие XML-файлы - он там есть:
Обратите внимание на элемент <output>
.
Мне бы очень хотелось, чтобы этот вывод был опубликован вместе с результатами теста.Как я могу это сделать?
PS
Есть еще одна проблема с публикацией.Продолжительность пробега указывается как 4 ч 59 м в верхней панели, но в нижней панели сведений это правильные значения 10: 48,176 минут.4 часа 59 минут очень похожи на 5 часов, что является разницей во времени между EST и UTC.Тесты были запущены на сервере Octopus и были получены сборкой vNext.Может быть, где-то путаница с часовым поясом.
РЕДАКТИРОВАТЬ 1
У нас есть локальный TFS
РЕДАКТИРОВАТЬ 2
Изучение исходного кода задачи Publish Test Results
показывает, что она использует сборку Microsoft.TeamFoundation.TestClient.PublishTestResults
для анализа результатов теста NUnit XML.В частности, следующий код C # используется для анализа элемента test-case
(NUnit3ResultsXmlReader.cs):
if (testCaseResultNode.Attributes["result"] != null)
{
testCaseResultData.TestCaseResult.Outcome = !string.Equals(testCaseResultNode.Attributes["result"].Value, "Passed", StringComparison.OrdinalIgnoreCase) ? (!string.Equals(testCaseResultNode.Attributes["result"].Value, "Failed", StringComparison.OrdinalIgnoreCase) ? (!string.Equals(testCaseResultNode.Attributes["result"].Value, "Skipped", StringComparison.OrdinalIgnoreCase) ? TestOutcome.Inconclusive.ToString() : TestOutcome.NotExecuted.ToString()) : TestOutcome.Failed.ToString()) : TestOutcome.Passed.ToString();
XmlNode xmlNode1 = testCaseResultNode.SelectSingleNode("failure");
if (xmlNode1 != null)
{
XmlNode xmlNode2 = xmlNode1.SelectSingleNode("message");
XmlNode xmlNode3 = xmlNode1.SelectSingleNode("stack-trace");
testCaseResultData.TestCaseResult.ErrorMessage = xmlNode2 != null ? xmlNode2.InnerText : (string) null;
testCaseResultData.TestCaseResult.StackTrace = xmlNode3 != null ? xmlNode3.InnerText : (string) null;
XmlNode xmlNode4 = testCaseResultNode.SelectSingleNode("output");
if (!string.IsNullOrWhiteSpace(xmlNode4 != null ? xmlNode4.InnerText : (string) null))
testCaseResultData.ConsoleLog = xmlNode4.InnerText;
}
}
Из чего следует, что авторы сборки считают, что вывод теста полезен только тогда, когдавопрос не удался.Это неудачное решение, потому что не им решать, когда результат будет полезен.Если он есть в результатах теста XML, то его следует опубликовать.
Открыт новый выпуск https://github.com/Microsoft/azure-pipelines-tasks/issues/8979
Открыт запрос функции Azure DevOps - https://developercommunity.visualstudio.com/idea/432166/the-publish-tests-azure-devops-plugin-should-publi.html