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