Программно собирая результаты NUnit
Я запускаю несколько тестов NUnit автоматически, когда завершается ночная сборка. У меня есть консольное приложение, которое обнаруживает новую сборку, а затем копирует встроенные MSI-файлы в локальную папку и развертывает все мои компоненты на тестовом сервере. После этого у меня есть куча тестов в NUnit dll, которые я запускаю, выполняя "nunit-console.exe" с помощью Process/ProcessStartInfo. У меня вопрос, как программно получить цифры для тестов Total Success/Failed?
4 ответа
Вы рассматривали возможность использования сервера непрерывной интеграции, такого как CruiseControl.NET?
Он создает и запускает тесты для вас и отображает результаты на веб-странице. Если вы просто хотите инструмент, позвольте nunit-console.exe
выводить результаты в XML и анализировать / преобразовывать их с помощью XSLT-скрипта, подобного тем, которые приходят из круиз-контроля.
Вот пример такого файла XSL, если вы запускаете преобразование на прямом выходе nunit-console.exe
тогда вам придется адаптировать выбранные операторы и удалить cruise control.
Однако, похоже, вы заинтересованы в непрерывной интеграции.
У нас было похожее требование, и мы сделали это, прочитав XML-файл Test Result, сгенерированный 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);
Я процитирую из примечаний к выпуску nunit 2.4.3:
Запуск консоли теперь использует отрицательные коды возврата для ошибок, возникших при попытке запустить тест. Сбои или ошибки в тесте сами по себе дают положительный код возврата, равный количеству таких сбоев или ошибок.
(акцент мой). Здесь подразумевается, что, как обычно в bash, возвращение 0 указывает на успех, а ненулевое указывает на сбой или ошибку (как указано выше).
НТН
Недавно у нас было похожее требование, и мы написали небольшую библиотеку с открытым исходным кодом, чтобы объединить файлы результатов в один совокупный набор результатов (как если бы вы запустили все тесты с помощью одного запуска nunit-console).
Вы можете найти его на https://github.com/15below/NUnitMerger