Загрузить изображение различий с помощью CTest и CDash

Для запуска автоматических тестов в приложении C++ я бы хотел, чтобы приложение выгружало изображение и сравнивало его с базовым изображением. Я видел несколько примеров этого на различных инструментальных панелях CDash, например, на этой (ссылка может быть недействительной долго). https://open.cdash.org/testDetails.php?test=660365465&build=5407474

Мой гугл-фу подвел меня на этом, как правильно получить эту функциональность?

1 ответ

Решение

Самый простой способ прикрепить обычные файлы к результатам тестирования - перечислить эти файлы в ATTACHED_FILES или же ATTACHED_FILES_ON_FAIL тестовые свойства. Это не механизм, используемый здесь, хотя.

Согласно этому сообщению в списке рассылки, вы можете выводить специальное содержимое, как показано ниже, в стандартный вывод теста, и это приводит к загрузке именованных файлов. Образец страницы результатов CDash, на которую вы ссылаетесь, следует шаблону, подобному примеру из списка рассылки, который я воспроизвел здесь для справки (я внес одно небольшое исправление, чтобы изменить его). DifferenceImage в DifferenceImage2):

<DartMeasurement name="BaselineImage" type="text/string">Standard</DartMeasurement>
<DartMeasurementFile name="TestImage" type="image/png">C:/Users/.../Testing/Temporary/BoxWidget.png</DartMeasurementFile>
<DartMeasurementFile name="DifferenceImage2" type="image/png">C:/Users/.../Testing/Temporary/BoxWidget.diff.png</DartMeasurementFile>
<DartMeasurementFile name="ValidImage" type="image/png">C:/Users/.../VTKData/Baseline/Widgets/BoxWidget.png</DartMeasurementFile>

Я проверил исходный код CTest, и он сканирует результаты теста в поисках <DartMeasurement> а также <DartMeasurementFile> теги здесь и здесь. Они загружаются как отдельные элементы измерения в CDash, который также ищет эти конкретные имена и представляет их специально, как в примере ссылок на CDash в вопросе.

Другие вопросы по тегам