如何测试绘制到 canvas 的方法?

How to test a method that draws to the canvas?

如何测试将内容绘制到 canvas 的方法。例如,对于 android 应用程序,我有以下代码:

@Override
public void draw(Canvas canvas) {
    canvas.drawRect(rect, paint);
}

这当然是一个非常简单的示例,但仍然:我如何测试是否绘制了正确的 Rect?换句话说,如何检查 UI 是否显示正确的内容。

我想我可以检查屏幕上的所有像素以查看它们是否具有正确的属性,但我想这是一种非常幼稚的方法:)

基本上您不会测试您没有在单元测试中实现的功能。

您编写单元测试以确保发生预期的调用。并且预期的参数被传递给这样的库方法。

然后,稍后,您可能会对端到端功能进行手动测试。

编辑:这真的取决于你的目标。如果您想通过单元测试分别获得最大代码 "feature" 覆盖率,那么您的整个设计都需要为此做好准备。

当然,有时使用 "library call" 背后的实际功能很容易(当您可以轻松测试结果时)。但是拥有真正的 canvas 并进行 "real drawing" 可能需要您 运行 相当多的 "environment" 才能进行任何类型的测试。所以,我个人会尝试隔离我所有的逻辑,这样它就变得容易测试,然后确保我有有效的手段来测试最终结果。