2016-11-23 78 views
1

我试图确保SDK作为framework按预期工作。从框架中的Plist读取单元测试

我为此目的使用XCTests编写了一些单元测试。我需要从Plist中读取一些信息,但路径总是以nil结尾。

我使用:

NSBundle *bundle = [NSBundle bundleForClass: [self class]]; 
NSString *path = [bundle pathForResource:@"aPList" ofType:@"plist"]; 

我已经得到了Plist通过构建阶段复制。

+0

只是一个想法,是plist文件集对测试目标的目标依赖吗? – OliverM

+0

@OliverM如果你是指目标会员,是的。 – Kheldar

+0

我发现该文件被复制到xctest结果中,但没有被复制到框架本身(这正如我所料,因为我认为Plist应该由最终用户开发人员添加)。出于测试目的,我已将它添加到框架目标中,但结果是可能的。不得不为“真正编译”添加一个目标,而为“测试编译”添加另一个目标听起来是错误的。有没有更好的选择,也许在我正在编写的代码中访问该包? – Kheldar

回答

0

您的SDK的用户通常不会将plist添加到框架,而是添加到他们自己的应用程序(主包)中。 SDK中的一个类可以使用NSURL /路径初始化到plist。这样,[[NSBundle mainBundle] pathForResource:@"aPList" ofType:@"plist"]可以在单元测试和应用程序包中使用,以获得SDK使用的plist路径。

+0

实际上,这是我最初的做法,但是我发现它在我的测试中不起作用。 – Kheldar