如何单元测试drawRect的自定义实现

时间:2014-10-14 11:03:54

标签: ios unit-testing ocmock xctest

我正在尝试使用XCTest编写一个test / s来驱逐drawRect方法的自定义实现的实现,并且我不确定如何执行此操作。

由于test / s,我希望编写的代码如下:

- (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进行了一些研究。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

  • 对于构建路径的路径,您可以询问它们的路径,然后验证它是否按预期构建。
  • 对于绘图上下文,您可以站起来绘制上下文(可能是位图上下文)并验证对上下文的预期更改(如笔触宽度,连接样式,笔触或填充颜色等)受试验方法影响。

如果这不可行,那么你可能会看到更像黄金大师测试的东西,在那里你可以画出看起来正确的东西,祝福那些黄金大师&#34 ;通过将绘图输出保存为图像,然后设置测试套件以重新绘制应该是相同图像的内容并比较两者。如果它没有相同,则测试失败。

相关问题