gpt4 book ai didi

ios - 如何对 drawRect 的自定义实现进行单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:07 26 4
gpt4 key购买 nike

我正在尝试使用 XCTest 编写一个或多个测试来驱动 drawRect 方法的自定义实现的实现,但我不确定如何执行此操作。

由于测试,我希望编写的代码如下:

- (void)drawRect:(CGRect)rect
{
CGPoint startOfHorizontalLine = (CGPointMake(1.0f, 0.0f));
CGPoint endOfHorizontalLine = (CGPointMake(1.0f, 10.0f));

UIColor * lineColour = [UIColor colorWithRed:40.0f/255.0f green:34.0f/255.0f blue:34.0f/255.0f alpha:1.0f];
[lineColour setStroke];

UIBezierPath *horizontalLine = [UIBezierPath bezierPath];
[horizontalLine moveToPoint:startOfHorizontalLine];
[horizontalLine addLineToPoint:endOfHorizontalLine];
[horizontalLine stroke];
}

如果我需要使用模拟库,我对 OCMock 做了一些研究。

谢谢你的帮助。

最佳答案

要对此进行测试,您最好将主体拉出到构建路径或配置当前绘图上下文的方法中。然后测试变得非常简单:

  • 对于那些构建路径的人,您可以询问他们的路径,然后验证它是否按预期构建。
  • 对于绘图上下文,您需要建立一个绘图上下文(可能是位图上下文)并验证对上下文的预期更改(如描边宽度、连接样式、描边或填充颜色等)是否生效通过被测方法。

如果这不可行,那么您可能正在寻找更像是黄金大师测试的东西,在那里您可以绘制看起来正确的东西,通过将绘图输出保存为图像来保佑它成为“黄金大师”,然后设置测试套件以重新绘制应该相同的图像并比较两者。如果结果不一样,则测试失败。

关于ios - 如何对 drawRect 的自定义实现进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26359250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com