【问题标题】:How to test a method that draws to the canvas?如何测试绘制到画布的方法?
【发布时间】:2018-12-08 10:21:58
【问题描述】:

如何测试将某些东西绘制到画布上的方法。例如,对于一个 android 应用程序,我有以下代码:

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

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

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

【问题讨论】:

    标签: java android testing canvas draw


    【解决方案1】:

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

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

    然后,稍后,您可以手动测试端到端功能。

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

    当然,有时使用“库调用”背后的实际功能很容易(当您可以轻松测试结果时)。但是拥有一个真正的画布并进行“真正的绘图”可能需要您为任何类型的测试运行相当多的“环境”。所以,我个人会尝试隔离我所有的逻辑,让测试变得容易,然后确保我有有效的手段来测试最终结果。

    【讨论】:

    • 但是如果我有额外的逻辑怎么办。例如,在绘制之前首先将所有红色对象变为蓝色的代码。还是我应该先将这段代码提取到一个新方法中并测试这个新方法?
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2020-10-14
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多