【问题标题】:"plist" doesn't load from iPhone unit-test class“plist”不从 iPhone 单元测试类加载
【发布时间】:2009-11-16 13:00:37
【问题描述】:

我正在尝试对用于从 plist 文件加载和查询数据的代码进行单元测试。我正在使用代码加载数据:

NSString *path = [[NSBundle mainBundle] pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];

在模拟器和设备上测试应用时,一切正常。但是当我运行单元测试时,代码“[arrayOfShops count]”总是返回“0”。

对于主要目标和单元测试目标,我在“复制捆绑资源”、“编译源”和“使用库链接二进制文件”中有相同的文件。我也尝试过使用和不使用主要目标作为单元测试目标的“直接依赖关系”。

有谁知道问题出在哪里?

【问题讨论】:

    标签: iphone unit-testing plist


    【解决方案1】:

    您不能将[NSBundle mainBundle] 与 Xcode 单元测试一起使用,如果您改用它,它将起作用:

    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
    
    NSString *path = [bundle pathForResource:@"availableshops" ofType:@"plist"];
    NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];
    

    【讨论】:

      【解决方案2】:

      this answer。显然mainBundle 在测试包的上下文中不起作用。

      【讨论】:

        【解决方案3】:

        你确定 plist 根元素是一个数组吗?发布 plist 可能会有所帮助。

        你也可以试试这个:

        NSArray* shopsArray = [NSArray arrayWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"availableshops.plist"];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-18
          • 1970-01-01
          • 2014-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多