单元测试图形

Mik*_*ark 6 java graphics junit unit-testing

是否有生成图形的单元测试代码的标准最佳实践?我正在使用Java和jUnit,但我认为这个概念也适用于其他语言.

到目前为止,我能想到的最好的方法是使用Mockito来模拟Graphics对象并断言预先计算的东西,例如(伪代码):

assert that graphics.drawString was called with ("abc", 50, 100)
assert that graphics.setBackgroundColor was called with Color.RED
Run Code Online (Sandbox Code Playgroud)

虽然这一切都很好,但我想知道这是否是正确的方法,或者是否有更多已有的测试图形代码的实践.

lba*_*scs 4

我不知道这是否是既定的做法,但我会考虑使用 Batik 项目中的SVGGraphics2D来模拟 Graphics,并比较生成的SVG文件。

与比较二进制文件相比,SVG 文件的优点是相对可读的 XML 文件,因此如果两个文件不相等,您不仅知道存在问题,而且还可以很好地提示问题的确切位置。

相对于您的解决方案的优点是可以查看这些 SVG 文件(例如在浏览器中),因此测试的场景是自我记录的。