访问Objective-C中的单元测试的资产目录

时间:2017-09-20 16:29:01

标签: ios objective-c xcode unit-testing

我有一个用Objective-C编写的CocoaPods项目,我想对其进行单元测试。有问题的项目适用于图像,因此我需要将一些图像提供给它以进行测试。在任何情况下,这些图像都不会在发布版本中使用 - 因此主要目标无需访问它们。

我首先创建了一个资产文件&将它与我的测试目标联系起来:

enter image description here

在我的资产文件中,我为我的第一个测试图像创建了一个条目:

enter image description here

我还验证了资产文件正被复制到测试对象项目阶段选项卡下的捆绑资源中:

enter image description here

然后,在我的单元测试中,我称之为:

- (void)testLoadImage {
    UIImage *image = [UIImage imageNamed:@"colortestpattern"];
    XCTAssertNotNil(image);
}

测试失败,因为未设置图像。

因为我需要大量图像进行测试,所以我希望使用资产文件。但是,如果这是不可能的,那么我愿意接受替代方案。

1 个答案:

答案 0 :(得分:2)

您是否尝试过UIImage的课程方法imageNamed:inBundle:compatibleWithTraitCollection:

UIImage *image = [UIImage imageNamed: @"colortestpattern"
                            inBundle: [NSBundle bundleForClass: [self class]]
       compatibleWithTraitCollection: nil];

图像应该在单元测试包中,而不是主包。