swift - 如何对 NS* Cocoa 类制作的位图进行稳健测试?
问题描述
我正在为我的 Mac 应用程序的 Swift 代码编写一些测试。
我需要测试的情况之一是:
有一个带有附件的 NSAttributedString
每个附件都由位图(1x 或 2x)制作,并由带有自定义颜色的代码着色
绘制属性字符串并验证输出是否与参考图像相同
另一个测试用例可能是:
有一个 NSView
在视图中绘制一些东西
验证视图的位图是否与参考图像相同
有2个问题:
根据运行测试的 Mac 硬件,Cocoa 将使用 1x 或 2x 图像。这迫使每个测试用例有 2 个参考图像,这显然是一个不切实际的解决方案。
同样取决于 Mac 硬件,生成的 NSImage 对象将采用屏幕的颜色配置文件。如果测试在另一台 Mac 上运行,或者在同一台 Mac 上但连接到不同的显示器,这会使测试失败。
我尝试更深入并使用 CG* 函数来绘制我的绘图,提供图像的大小和色彩空间。以这种方式编写的测试是稳定的,但我不能用 CG* 替换所有 NS* 代码,因为这意味着不测试与 NS* 类的集成,最后,这是我需要测试的。
在具有虚拟屏幕的环境中运行测试会很好,这样 NS* 类将始终以相同的方式运行,但我找不到它是否以及如何实现。
所以,最后一个问题是:如何测试涉及 NS* 类并生成位图的代码?
解决方案
推荐阅读
- ios - 存储对相机胶卷图像的引用 - Swift 4
- firebase-realtime-database - Firebase 安全规则和身份验证
- javascript - NEDB $and 运算符
- java - 带有 JavaFX 的 Musicplayer - 如何将文件名作为歌曲名称?
- android - 成功注册活动后的Android导航返回
- ruby - 在比较中使用 & 和枚举数
- google-cloud-dataprep - google dataprep(trifacta 的 clouddataprep)提示:如果作业太大,将无法运行
- php - 从数组打印特定信息时出错 - “警告:非法字符串偏移 'id'”
- ios - 二进制拒绝
- highcharts - 如何使可滚动绘图区域填充高图表中所有图表的背景区域?