测试自定义视图的 onMeasure/onLayout/onDraw 方法的好方法是啥?

Posted

技术标签:

【中文标题】测试自定义视图的 onMeasure/onLayout/onDraw 方法的好方法是啥?【英文标题】:What is a good way to test the onMeasure/onLayout/onDraw methods of a custom View?测试自定义视图的 onMeasure/onLayout/onDraw 方法的好方法是什么? 【发布时间】:2015-02-01 12:32:18 【问题描述】:

我刚刚编写了一个自定义 View 类,除其他外,它允许开发人员轻松设置边框(例如setBorderWidthsetBorderColorsetBorderWidthLeft 等)。我通过覆盖 onMeasure/onDraw 来做到这一点,并且我想测试 View 是否正确绘制了这些边框。

理想情况下,我想要比单元测试更高级别的东西:基本上我想强制执行,如果我设置边框,它们会按预期绘制;如果我不设置它们,它们就不会被绘制;如果我更改它们,则会绘制新边框并且不再可见旧边框。这让我知道我的观点在高层次上发挥作用。

我考虑过的事情:

    使用 Robolectric 单独获取视图并使用模拟 Canvas 手动调用 onDraw(但不测试失效) 制作一个 Activity 测试用例并以某种方式保存 Activity 的屏幕截图并以编程方式对其进行分析。

这些对我来说都不是很好,但我倾向于 2)。还有其他想法吗?

【问题讨论】:

【参考方案1】:

对于测试onDrawonLayoutonMeasurescreenshots-tests-for-android 是相当不错的选择。

【讨论】:

以上是关于测试自定义视图的 onMeasure/onLayout/onDraw 方法的好方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

测试自定义视图的 onMeasure/onLayout/onDraw 方法的好方法是啥?

自定义 UIView 的子视图未出现在 UI 测试中

在 XCode 中的 UI 测试期间无法访问自定义视图

在 Swift 3 UI 测试中访问自定义视图组件中的元素

自定义标注视图不想出现

如何测试自定义 UINavigationController 行为