UIImage returns UITests 中为零

UIImage returns nil in UITests

在我的 UITests 中,我想将元素的图像与来自 .xcassets 的图像进行比较:

 let referenceImage = UIImage(named: "referenceImage")
 guard  referenceImage != nil else {
    print("didn't find referenceImage image in assets")
    XCTAssert(false)
    return
    }
 let cellImage = myCell.images.elementBoundByIndex(0)
 let imagesEqual = (referenceImage!.isEqual(cellImage))
 XCTAssert(imagesEqual)

referenceImage 始终为零,尽管我已将 Assets.xcassets 添加到我的 UITests 目标(在 UITest 目标->构建 phases/Copy 捆绑资源中进行了双重检查)。

这里有什么问题吗?

UIImage 使用主包来查找图像。 测试包是一个不同的包。 你应该使用 UIImage 的

init(named:in:compatibleWith:)

您可以在其中明确指定您的测试包。

您可以使用 Bundle 的 initForClass 获取测试目标的包,并传递您当前的测试 class.