在XCTestCase中使用UIImage imageNamed

时间:2014-04-07 07:48:36

标签: ios objective-c unit-testing uiimage xctest

我无法获得依赖于使用imageNamed工作的代码的Cocoa Touch静态库的XCTestCase单元测试。

我将我的图片“plane.png”添加到了测试目标,但是[UIImage imageNamed]一直没有返回。
当我在测试中明确指定图像的路径并从文件加载图像时,它确实有效。

NSString* imagePath = [[[NSBundle bundleForClass:[self class]] resourcePath] stringByAppendingPathComponent:@"plane.png"];
UIImage* imageWorks = [UIImage imageWithContentsOfFile:imagePath];

UIImage* imageStaysNil = [UIImage imageNamed:@"plane.png"];

如何为使用imageNamed

的代码编写单元测试

3 个答案:

答案 0 :(得分:17)

在XCTest中,您不在mainBundle中。所以从你的XCTest包中获取你的图像。

(此解决方案适用于iOS8 +)

ObjC

MetaTrader Terminal 5

夫特

[UIImage imageNamed:@"..." inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];

答案 1 :(得分:1)

由于您的xctest项目的行为与其他项目不同,因此也必须为xctest添加.png文件。

将你的plane.png图片添加到xctest项目中。 确保你已经检查过像

enter image description here

使用相同的代码

对我来说很好

enter image description here

答案 2 :(得分:0)

被接受的答案对我不起作用;这是做什么的。

let image = UIImage(contentsOfFile: 
    Bundle(for: type(of: self))
    .path(forResource: "plane", ofType: "png")!)!