私は iPhone の単体テストの作成に関する Apple のドキュメントに従ってきましたが、箱から出してすぐにはルーチンが機能しないようです。単体テストがどこでアプリケーション デリゲートへの参照を取得するのか、よくわかりません。
私の依存関係は次のようなものです: My_Program_target -> UnitTesting_target -> UnitTests_bundle
次のコード スニペットは、アサートが失敗する場所です。私は CPPUNIT に非常に精通していますが、これがどのように交差するかを理解するのに苦労しています。
- (void) testAppDelegate {
id yourApplicationDelegate = [[UIApplication sharedApplication] delegate];
STAssertNotNil(yourApplicationDelegate, @"UIAppliation failed to find the AppDelegate");
}
さらに:
私は自分のアプローチで論理テストを行うことにしました。XML ファイルを読み取ろうとしていますが、ファイルにアクセスできるパスを提供するバンドルを解決できません。allBundles で出力されたパスに貼り付けてみましたが、そのパスも機能していないようです。以下は、テストで実行しているものです (バンドルのパスを出力するために使用しているデバッグ ステートメントを確認できます)。
NSLog(@"BundlePaths: %@", [NSBundle allBundles]);
NSString * path = [[NSBundle bundleWithPath:@"$(TARGET_BUILD_DIR)"] pathForResource:@"SimpleTestList" ofType:@"plist"];
STAssertNotNil(path, @"Bundle Location couldn't find the file specified");
基本的に、パスのアサートは成功しませんが、バンドル リソースをコピーするように指示した unitTest バンドルを参照するパスまたはディレクトリに何を指定すればよいかわかりません。[NSBundle mainBundle] の呼び出しも機能しません。