Я запускаю некоторые тесты NUnit автоматически, когда моя ночная сборка завершается. У меня есть консольное приложение, которое обнаруживает новую сборку, а затем копирует встроенные MSI в локальную папку и развертывает все мои компоненты на тестовом сервере. После этого у меня есть множество тестов в DLL NUnit, которые я запускаю, выполняя «nunit-console.exe» с помощью Process/ProcessStartInfo. Мой вопрос в том, как программно я могу получить номера для тестов Total Success/Failed?Programmatically Gathering Результаты NUnit
ответ
Рассматривали ли вы использование непрерывного сервера интеграции, такого как CruiseControl.NET?
Он строит и запускает тесты для вас и отображает результаты на веб-странице. Если вы просто хотите инструмент, пусть nunit-console.exe
выводит результаты в XML и анализирует/преобразует его с помощью XSLT-скрипта, подобного тем, которые поступают из круиз-контроля.
Here is an example of such an XSL file Если вы выполняете преобразование на прямом выходе nunit-console.exe
, вам придется адаптировать операторы выбора и удалить cruisecontrol.
Однако, похоже, вас может заинтересовать непрерывная интеграция.
У нас недавно было аналогичное требование, и он написал небольшую библиотеку с открытым исходным кодом для объединения файлов результатов в один совокупный набор результатов (как если бы вы выполнили все тесты с помощью одного запуска nunit-console).
Вы можете найти его на https://github.com/15below/NUnitMerger
У нас были аналогичные требования, и то, что мы сделали, чтобы прочитать в XML-файл Результат теста, который генерируется NUnit.
XmlDocument testresultxmldoc = new XmlDocument();
testresultxmldoc.Load(this.nunitresultxmlfile);
XmlNode mainresultnode = testresultxmldoc.SelectSingleNode("test-results");
this.MachineName = mainresultnode.SelectSingleNode("environment").Attributes["machine-name"].Value;
int ignoredtests = Convert.ToInt16(mainresultnode.Attributes["ignored"].Value);
int errors = Convert.ToInt16(mainresultnode.Attributes["errors"].Value);
int failures = Convert.ToInt16(mainresultnode.Attributes["failures"].Value);
int totaltests = Convert.ToInt16(mainresultnode.Attributes["total"].Value);
int invalidtests = Convert.ToInt16(mainresultnode.Attributes["invalid"].Value);
int inconclusivetests = Convert.ToInt16(mainresultnode.Attributes["inconclusive"].Value);
Я процитирую из release notes for nunit 2.4.3:
Консоль бегун теперь использует отрицательные коды возврата для ошибок, возникающих при попытке запустить тест. Ошибки или ошибки в самом тесте дают положительный код возврата , равный числу таких сбоев или ошибок.
(внимание мое). Здесь подразумевается, что, как обычно в bash, возврат 0 указывает на успех, а ненулевой - отказ или ошибка (как указано выше).
HTH