【发布时间】:2017-05-05 06:03:49
【问题描述】:
在我的一个XCTests 类中,我需要从资产目录加载图像来测试图像处理逻辑。但是,似乎在测试目标中使用UIImage(named: "imageName") 会返回nil。
我检查了我的资产目录中的测试目标成员资格,我还应该做些什么来从我的XCTest 类中读取图像?
【问题讨论】:
标签: xcode xctest asset-catalog
在我的一个XCTests 类中,我需要从资产目录加载图像来测试图像处理逻辑。但是,似乎在测试目标中使用UIImage(named: "imageName") 会返回nil。
我检查了我的资产目录中的测试目标成员资格,我还应该做些什么来从我的XCTest 类中读取图像?
【问题讨论】:
标签: xcode xctest asset-catalog
根据文档,您必须在运行时添加它们。
如果您的测试使用资产(数据文件、图像等),它们可以 添加到测试包并在运行时使用 NSBundle 访问 蜜蜂。将
+[NSBundle bundleForClass:]与您的测试类一起使用可确保 您获得正确的捆绑包以检索资产。更多 信息,请参阅NSBundle Class Reference。
在 Swift 中,它会是这样的:
let appBundle = Bundle(for: type(of: MyClass) as! AnyClass)
【讨论】:
@mylovemhz 的回答是正确但不完整。您需要引用捆绑包:
斯威夫特 3:
UIImage(named: "imageName", in: Bundle(for: MyTestClass.self), compatibleWith: nil)
还要确保您的资产与您的测试类包含在同一目标中。
【讨论】:
NSImage (macOS) 一起使用。