Программный сбор результатов NUnit

Я запускаю некоторые тесты NUnit автоматически, когда моя ночная сборка завершается. У меня есть консольное приложение, которое обнаруживает новую сборку, а затем копирует созданные MSI в локальную папку и развертывает все мои компоненты на тестовом сервере. После этого у меня есть набор тестов в dll NUnit, которые я запускаю, выполняя "nunit-console.exe" с помощью Process / ProcessStartInfo. У меня вопрос: как программно получить числа для тестов Total Success / Failed?


person skb    schedule 11.06.2010    source источник


Ответы (4)


Рассматривали ли вы использование сервера непрерывной интеграции, такого как CruiseControl.NET?

Он создает и запускает тесты для вас и отображает результаты на веб-странице. Если вам просто нужен инструмент, позвольте nunit-console.exe вывести результаты в XML и проанализировать / преобразовать их с помощью сценария XSLT, подобного тем, которые поступают из круиз-контроля.

Вот пример такого XSL-файла, если вы запускаете преобразование на прямом выходе of nunit-console.exe, тогда вам придется адаптировать операторы select и удалить круиз-контроль.

Однако похоже, что вас может заинтересовать непрерывная интеграция.

person jdehaan    schedule 11.06.2010
comment
Ссылка вроде мертвая. Получение ERR_NAME_NOT_RESOLVED - person Applejag; 05.02.2021

У нас было аналогичное требование, и мы прочитали 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);
person Ashish Narmen    schedule 27.06.2012

Недавно у нас было аналогичное требование, и мы написали небольшую библиотеку с открытым исходным кодом, чтобы объединить файлы результатов в один совокупный набор результатов (как если бы вы выполнили все тесты за один запуск nunit-console).

Вы можете найти его на странице https://github.com/15below/NUnitMerger.

person mavnn    schedule 25.06.2012

Я процитирую примечания к выпуску для nunit 2.4.3. :

Средство выполнения консоли теперь использует отрицательные коды возврата для ошибок, обнаруженных при попытке запустить тест. Сбои или ошибки в тесте сами по себе дают положительный код возврата, равный количеству таких сбоев или ошибок.

(курсив мой). Подразумевается, что, как это обычно бывает в bash, возврат 0 указывает на успех, а ненулевое значение указывает на сбой или ошибку (как указано выше).

HTH

person EdwardGarson    schedule 02.02.2015