У меня есть сборка vNext, которая запускает несколько тестов NUnit и публикует результаты. Однако результаты тестов не публикуются, даже если они находятся в соответствующем XML-файле.
Например:
Но, если я проверю соответствующие файлы XML - они там:
Обратите внимание на элемент <output>
.
Я бы очень хотел, чтобы этот вывод был опубликован вместе с результатами тестирования. Как я могу это сделать?
P.S.
Есть еще одна проблема с издательством. Продолжительность пробега отображается как 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