Получение статистики покрытия тестов DUnit с помощью FinalBuilder и AQTime

StackOverflow https://stackoverflow.com/questions/2308009

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

  • Тесты DUnit компилируются как консольные приложения с использованием Ттексттестестенер определено в модуле 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top