Получение использования статистики Тестового покрытия DUnit FinalBuilder и AQTime

У нас есть большой проект Delphi (1,5 миллиона строк кода), и мы перемещаемся в использование гибких процессов.

У нас уже есть непрерывная среда интеграции (FinalBuilder), который я обновил для включения модульных тестов (дунит) и метрики кода (CodeHealer) в электронных письмах всем в нашей группе разработчиков. Наше покрытие модульного теста не является большим, таким образом, я теперь пытаюсь получить AQtime в соединение для некоторых результатов тестового покрытия на каждой сборке.

Я использую, "Выполняют Программу" задача выполнить исполняемый файл модульного теста, зарегистрировать результаты и проанализировать файл впоследствии. Я намереваюсь использовать "Выполненный Сценарий" задача выполнить AQtime (через COM) и экспортировать результаты в XML, таким образом, я могу проанализировать через те результаты.

Проблемой, которую я имею, является с AQtime выполнение исполняемого файла модульного теста, я теряю способность контролировать исполняемый файл модульного теста непосредственно. Я хотел бы заставить FinalBuilder анализировать результаты обеих задач. Кто-либо знает, как получить доступ к результатам дунита, когда это называют от AQtime?

10
задан Catharz 21 February 2010 в 23:54
поделиться

2 ответа

Мы пошли по тому же пути, и мы не запускаем тест DUnit из AQTime,

Вместо этого мы создаем и запускаем наши тесты Dunit с помощью FinalBuilder.

Наши модульные тесты используют XmlTestRunner, тогда мы можем узнать, завершился ли тест или нет, с помощью запроса XPath к полученному XML-файлу.

Обновление: Недавнее обновление FinalBuilder 7.0 теперь поддерживает DUnit. Это через собственный XMLTestrunner.pas, который после установки находится в каталоге FinalBuilder. Этот бегун выводит результаты теста в том же формате, что и NUnit. Затем он действительно хорошо интегрируется в FinalBuilder Server.

7
ответ дан 4 December 2019 в 01:56
поделиться

Вы как бы описываете установку, к которой мы постепенно развиваемся.

  • Тесты DUnit компилируются как консольные приложения с использованием TTextTestListener, определенного в блоке TextTestRunner.
  • CI-сервер представляет собой cmd-скрипт, который собирает все проекты и выполняет все тесты.
  • Вывод тестов передается в файл.

Решение может заключаться в том, чтобы AQTime профилировал эти консольные приложения и при этом мог передавать результаты в файл, который потом можно разобрать?!

Другим решением может быть реализация собственного объекта TestListener и запись результатов тестирования в журнал событий, непосредственно в лог-файл, базу данных или куда угодно, с последующей обработкой в FinalBuilder.

Вместо того, чтобы иметь что-то вроде этого в файле проекта

  Application.Initialize;
  if System.IsConsole then TextTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;

это будет выглядеть примерно так

  Application.Initialize;
  if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;
2
ответ дан 4 December 2019 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: