Получение статистики покрытия теста DUnit с использованием FinalBuilder и AQTime - PullRequest
10 голосов
/ 22 февраля 2010

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 25 февраля 2010

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

Вместо этого мы строим и запускаем наши тесты Dunit, используя FinalBuilder.

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

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

2 голосов
/ 22 февраля 2010

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

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

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

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

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

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

стало бы что-то вроде этого

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