Получение статистики тестирования DUnit Test с использованием FinalBuilder и AQTime
У нас есть большой проект Delphi (1,5 миллиона строк кода), и мы переходим к использованию гибких процессов.
У нас уже есть непрерывная интеграционная среда (FinalBuilder), которую я обновил для включения модульных тестов (dUnit) и метрик кода (CodeHealer) в сообщениях электронной почты всем в нашей команде разработчиков. Наш охват unit test невелик, поэтому я теперь пытаюсь получить AQtime в миксе для некоторых результатов тестирования на каждой сборке.
Я использую задачу "Выполнять программу" для запуска исполняемого файла unit test, записывать результаты и анализировать файл позже. Я намерен использовать задачу "Запустить Script" для запуска AQtime (через COM) и экспортировать результаты в XML, чтобы я мог проанализировать эти результаты.
Проблема заключается в том, что AQtime работает с исполняемым файлом unit test, я теряю возможность напрямую контролировать исполняемый файл unit test. Я бы хотел, чтобы FinalBuilder проанализировал результаты обеих задач. Кто-нибудь знает, как получить доступ к результатам dUnit при вызове из AQtime?
Ответы
Ответ 1
Мы пропустили этот же путь, и мы не запускаем тест DUnit из AQTime,
Вместо этого мы создаем и запускаем наши тесты Dunit с помощью FinalBuilder.
В наших модульных тестах используется XmlTestRunner, тогда мы можем знать,
тест терпит неудачу или не очень легко, используя запрос XPath в полученном XML файле.
Обновление: Последнее обновление для FinalBuilder 7.0 теперь поддерживает DUnit. Это через свой собственный XMLTestrunner.pas, который находится под каталогом FinalBuilder после установки.
Этот бегун выводит результаты тестирования в том же формате, что и NUnit. Затем он отлично интегрируется в FinalBuilder Server.
Ответ 2
Вы описываете настройку, к которой мы медленно развиваемся.
- Тесты DUnit скомпилированы в виде консольных приложений с использованием TTextTestListener, определенного в модуле TextTestRunner.
- CI-сервер - это cmd script, который строит все проекты и выполняет все тесты.
- Результаты тестов передаются в файл.
Возможно, решение должно иметь профиль AQTime для этих консольных приложений, но все же сможет передавать результаты в файл, который может быть проанализирован впоследствии?!
Другое решение может состоять в том, чтобы реализовать свой собственный объект TestListener и предоставить этому объекту запись testresults в журнал событий непосредственно в файл журнала, базу данных или везде, где вам нравится, и получить это от FinalBuilder.
Вместо того, чтобы иметь что-то подобное в вашем файле проекта
Application.Initialize;
if System.IsConsole then TextTestRunner.RunRegisteredTests
else GUITestRunner.RunRegisteredTests;
это станет чем-то вроде этого
Application.Initialize;
if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
else GUITestRunner.RunRegisteredTests;