У нас есть большой проект Delphi (1,5 миллиона строк кода), и мы перемещаемся в использование гибких процессов.
У нас уже есть непрерывная среда интеграции (FinalBuilder), который я обновил для включения модульных тестов (дунит) и метрики кода (CodeHealer) в электронных письмах всем в нашей группе разработчиков. Наше покрытие модульного теста не является большим, таким образом, я теперь пытаюсь получить AQtime в соединение для некоторых результатов тестового покрытия на каждой сборке.
Я использую, "Выполняют Программу" задача выполнить исполняемый файл модульного теста, зарегистрировать результаты и проанализировать файл впоследствии. Я намереваюсь использовать "Выполненный Сценарий" задача выполнить AQtime (через COM) и экспортировать результаты в XML, таким образом, я могу проанализировать через те результаты.
Проблемой, которую я имею, является с AQtime выполнение исполняемого файла модульного теста, я теряю способность контролировать исполняемый файл модульного теста непосредственно. Я хотел бы заставить FinalBuilder анализировать результаты обеих задач. Кто-либо знает, как получить доступ к результатам дунита, когда это называют от AQtime?
Мы пошли по тому же пути, и мы не запускаем тест DUnit из AQTime,
Вместо этого мы создаем и запускаем наши тесты Dunit с помощью FinalBuilder.
Наши модульные тесты используют XmlTestRunner, тогда мы можем узнать, завершился ли тест или нет, с помощью запроса XPath к полученному XML-файлу.
Обновление: Недавнее обновление FinalBuilder 7.0 теперь поддерживает DUnit. Это через собственный XMLTestrunner.pas, который после установки находится в каталоге FinalBuilder. Этот бегун выводит результаты теста в том же формате, что и NUnit. Затем он действительно хорошо интегрируется в FinalBuilder Server.
Вы как бы описываете установку, к которой мы постепенно развиваемся.
Решение может заключаться в том, чтобы 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;