一个人如何试验,如果应用程序呈现的东西是否正确?

例如(2D例):

Microsoft Word2007年http://img32.imageshack.us/img32/6197/37841144.png

你怎么知道这阴影是正确放置或正确的颜色轮廓是呈现的?或者如果3D效果呈现的正常工作时人们会转动方向?其他的事情可能是,如果字技术是重型,如何衡量其'正确'?

有帮助吗?

解决方案

有几个方面:

  1. 如果它实际上是非常精确地规定应该是什么和在哪些方式,然后你可以只是比较像素的一个参考呈现。
  2. 在情况下的事情就是SVG它不是那么明确规定。通常的做法是使用参考的效果,并比较它们的手。你可以很容易地复盖两个,减去一个来自其他并发现明显的差异,方法。这不是一个自动的进程,虽然。
  3. 你可以看看在表示数据绘制的图像,而不是银幕上的图像。得到什么绘制的是(在您的例子)的一个向量图形。这意味着有很多的形状,它应该有明确界定的性质、形状和颜色,你可以简单地比较你的形状的数据的参考。这种事情可以是自动完成的。我觉得谷歌使用类似的方法来比较铬是参照效果的网页;他们不比较像素数据,它们比较高级的数据是什么,以及如何浏览器 呈现。

其他提示

有两种方式:图像和基于渲染一个

图片的方式:你必须找到一种方式来呈现图像的像素内部缓冲区(所以你可以运行测试“无头”,即没有实际UI弹出)

然后选择几个像素,并确保他们的颜色是正确的。在您的例子中,选择了几个白色像素中的文本,以确保呈现不漏。像assertThatRectangleIs(area, color)辅助方法将帮助支付部分失地。这样做是为了选择特定的区域(像H的左侧垂直栏),而不是太挑剔。

在基于渲染的方式工作,并假设您的GFX库的工作方式。所以,你要做的就是嘲笑实际呈现代码是这样的:

public class MockGC extends GC {
    List<Op> ops = new ArrayList<Op> ();
    void drawLine (int x1, int y1, int x2, int y2) {
        ops.add(new Line(x1, y1, x2, y2, copyGC (gc)));
    }
}

所以你刚才保存命令和数据结构,很容易比较所有相关的选项。甚至:

public class MockGC extends GC {
    StringBuilder buffer = new StringBuilder ();

    void drawLine (int x1, int y1, int x2, int y2) {
        buffer.append("line "+x1+","+y1+" - "+x2+","+y2+", color="+foreground()+"\n");
    }
}

之后,你就可以只验证正确的渲染命令已经发出,而且GC(颜色,字体,呈现提示)使用。

,后者的方法是更快和100%精确,但更多的工作,以代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top