Программно собирая результаты 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

Другие вопросы по тегам