3

plistファイルからデータをロードしてクエリするためのコードを単体テストしようとしています。コードを使用してデータを読み込んでいます:

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

シミュレーターとデバイスでアプリをテストすると、すべてが機能します。しかし、単体テストを実行すると、コード" [arrayOfShops count]"は常に""を返します0

メインターゲットと単体テストターゲットの「バンドルリソースのコピー」、「ソースのコンパイル」、「バイナリとライブラリのリンク」に同じファイルがあります。また、単体テストターゲットの「直接従属」として、メインターゲットの有無にかかわらず試してみました。

誰かが問題が何であるかを知っていますか?

4

3 に答える 3

2

[NSBundle mainBundle]Xcode Unit Test では使用できません。代わりにこれを使用すると機能します。

NSBundle *bundle = [NSBundle bundleForClass:[self class]];

NSString *path = [bundle pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];
于 2012-12-26T23:00:47.737 に答える
1

この回答を参照してください。どうやらmainBundle、テストバンドルのコンテキストでは機能しません。

于 2013-03-18T23:36:08.920 に答える
0

plist ルート要素が配列であると確信していますか? plist を投稿すると役立つ場合があります。

これを試すこともできます:

NSArray* shopsArray = [NSArray arrayWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"availableshops.plist"];
于 2009-11-17T04:19:57.953 に答える