Swiftunit testing – 如何声明一个CGColor是它应该是什么?

使用Xcode V7.2。 试图进行unit testing,需要validation是否设置了正确的颜色,并得到这个消息:

Cannot invoke 'XCTAssertEqual' with an argument list of type '(CGColor, CGColor)' 

我如何主张一个CGColor是它应该是什么?

使用XCTAssert并testingCGColorEqualToColor是否为true。

从Swift 3.0 / Xcode 8.0开始,CGColorEqualToColor也不再起作用,它会导致错误“CG​​ColorEqualToColor is unavailable:use == instead”。

==或isEqual有以下限制:

当比较不同模型/空间的颜色(例如#FFF与[UIColor whiteColor])时,将返回NO [/ False])

(从这个答复 )可能不是所需的行为。

这很麻烦,但是我把颜色分解成它的R / G / B / Alpha分量并比较它们,例如:

  var red1:CGFloat=0, green1:CGFloat=0, blue1:CGFloat=0, alpha1:CGFloat=0 colour1.getRed(&red1, green:&green1, blue:&blue1, alpha:&alpha1) var red2:CGFloat=0, green2:CGFloat=0, blue2:CGFloat=0, alpha2:CGFloat=0 colour2.getRed(&red2, green:&green2, blue:&blue2, alpha:&alpha2) XCTAssertEqual(red1, red2) XCTAssertEqual(green1, green2) XCTAssertEqual(blue1, blue2) XCTAssertEqual(alpha1, alpha2)