使用CTest和CDash上传图像差异

时间:2018-06-06 11:47:41

标签: cmake ctest cdash

为了在C ++应用程序中运行自动化测试,我希望应用程序转储图像并将其与基线图像进行比较。我在各种CDash仪表板上看到了几个例子,例如:这一个(链接可能长时间无效)。 https://open.cdash.org/testDetails.php?test=660365465&build=5407474

我的google-fu在这个问题上失败了,获得此功能的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

将普通文件附加到测试结果的最简单方法是在ATTACHED_FILESATTACHED_FILES_ON_FAIL测试属性中列出这些文件。这不是这里使用的机制。

根据this mailing list post,你可以输出如下所示的特殊内容到测试的标准输出,它会导致命名文件被上传。您链接到的示例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>代码herehere。这些作为离散测量项目上传到CDash,CDash也会查找these particular names,并在问题的示例CDash链接中特别呈现它们。