如何为图形库编写测试?

orl*_*rlp 12 graphics integration-testing unit-testing

我正在用Python编写OpenGL 2D库.一切都很顺利,代码库正在稳步增长.

现在我想编写单元测试,以便在修复其他/创建新功能时不会意外地引入新的错误.但我不知道这些如何适用于图形库.

我想到的一些事情:

  • 制作参考屏幕截图并将其与测试中自动生成的屏幕截图进行比较
  • 用日志语句替换opengl调用并比较日志

但两者似乎都是个坏主意.测试图形库的常用方法是什么?

Dan*_*rod 6

我过去用于组件级测试的方法是:

  • 使用统一的彩色背景,搭配几种不同的颜色。
  • 在测试中使用统一颜色的矩形作为图形对象(有几种不同的颜色)。
  • 将矩形放置在已知位置,您可以自己计算它们在图像中的投影位置。
  • 计算每个像素(背景、前景或混合)的每个通道的预期强度。
  • 如果您有一个导致非圆形位置的测试场景,请使用不准确的比较(例如相关性)
  • 使用计算来创建预期结果图像。
  • 将输出图像与预期结果图像进行比较。
  • 如果您有模糊效果,请比较强度总和而不是离散强度。

正如格雷厄姆所说,内部单元可以在没有图形调用的情况下进行单元测试。